Return both data and errors from a resolver

I have a schema akin to the following
# YAML formatted in String
scalar YAML
type DocumentWrapper {
  id: ID!
  name: String
  document(validate: Boolean = false): YAML
}
type Query {
  # Get a single document wrapper entity
  documentWrapper(id: ID!): DocumentWrapper
}

And resolver classes for both Query and DocumentWrapper
@Component
public class Query implements GraphQLQueryResolver {
  @Autowired
  private DocumentWrapperRepository documentWrapperRepository;

  public DocumentWrapper getDocumentWrapper(UUID id) {
    return documentWrapperRepository.findById(id).get();
  }
}

@Component
public class DocumentWrapperResolver implements GraphQLResolver<DocumentWrapper> {
  @Autowired
  private DocumentValidator documentValidator;

  public DataFetcherResult<YAML> document(DocumentWrapper parent, boolean validate) {
    DataFetcherResult.Builder<YAML> builder = DataFetcherResult.<YAML>newResult().data(parent.getDocument());
    if (validate) {
      List<GraphQLError> errors = documentValidator.validate(parent.getDocument());
      builder.errors(errors).mapRelativeErrors(true);
    }
    return builder.build();
  }
}

The DocumentValidator returns a list of errors that are of type DocumentValidationError
public class DocumentValidationError extends GraphQLException implements GraphQLError{
  @Override
  public String getMessage() {
    // Return the root problem from cause
  }

  @Override
  public List<SourceLocation> getLocations() {
    return Collections.emptyList(); // Parent source location
  }

  @Override
  public ErrorClassification getErrorType() {
    return YAMLErrorType.DocumentValidationError;
  }

  @Override
  public List<Object> getPath() {
    return Collections.emptyList(); // Parent path
  }

  @Override
  public Map<String, Object> getExtensions() {
    // Return my extensions as map
    Map<String, Object> extensions = new LinkedHashMap<>();
    // Fill with details about  the validation error
    return extensions;
  }
}

With this setup I can get both the data and errors in the query response, BUT in the errors I get only the message, not extensions, locations or path. How can I get the extensions, locations and path showing in the query response in case there are validation errors?

Take a look at the original GraphQLErrorBuilder for inspiration. You have to add the DataFetchingEnvironment as the last argument of your resolver method and pass it along to your validator.

Take a look at the original GraphQLErrorBuilder for inspiration. You have to add the DataFetchingEnvironment as the last argument of your resolver method and pass it along to your validator.

Unfortunately this had no effect: still no extensions, locations or path in the errors :/

I don't know what you actually did now, but I hope you at least removed your getters for locations, path and extensions from your custom implementation. Seeing that you return empty or null there which explains why they are not present in the response.

Well the validator now returns a list of GraphQLErrorImpl instances
GraphqlErrorBuilder.newError(environment)
  .errorType(YAMLErrorType.DocumentValidationError)
  .message(validationError.getRootProblem())
  .extensions(validationError.getExtensions())
  .build();

So no, the returned GraphQLErrors should have path and locations set from the dataFetchingEnvironment.

I even tried return again instances of DocumentValidationError and setting the locations and paths for them from the environment.
To be frank, I don't really care that locations and path are missing, I just need the extensions to show up, as they will offer more detailed messages where and why the document validation failed.

Try enabling graphql.servlet.exception-handlers-enabled=true. Shouldn't matter, but that's the only thing that quickly comes to mind to try out. Anything else requires trying to reproduce, debugging and digging through the code which will take longer.

I have it enabled already :/ And disabling it causes some misery with GraphiQL (can't get any response).

I might whip out a debugger next week see if I could sort this out. One curious detail I noticed in some stack traces is that, even when my DocumentValidationError is a subtype of GraphQLException, the error handler GraphQLErrorFromExceptionHandler erroneously categorizes it as a "generic error".
From the stack trace of my getMessage() function I noticed that the method was called from line 36:
  private Collection<GraphQLError> transform(GraphQLError error) {
    return extractException(error).map(this::transform)
        .orElse(singletonList(new GenericGraphQLError(error.getMessage()))); // <-- this line
  }

which means that the method extractException must have returned an empty Optional. Here's the snipper of that method for reference:
  private Optional<Throwable> extractException(GraphQLError error) {
    if (error instanceof ExceptionWhileDataFetching) {
      return Optional.of(((ExceptionWhileDataFetching) error).getException());
    } else if (error instanceof SerializationError) {
      return Optional.of(((SerializationError) error).getException());
    } else if (error instanceof GraphQLException) {
      return Optional.of((GraphQLException) error);
    }
    return Optional.empty();
  }

But since my DocumentValidationException IS an instance of GraphQLException there must've been some error transformation prior to this categorization.

@Eetami Did you ever get this to work or still a problem?

Hey @oliemansm I think I found out the cause. After some testing I could not repro this issue in my sandbox project. Though I noticed that in the erronous project we had property graphql.servlet.exception-handlers-enabled set to true. After disabling it, I was able to see all details for some throwaway errors.
Though now I have a problem that when attempting to use my own error class, the response from GraphQL API is just an empty string ""


Simple Last.fm scrobbler stops scrobbling randomly.

The app seems to stop scrobbling randomly for periods of time (between 12h-72h so far). Not sure what causes this to happen/stop.
This started happening a week ago after I reinstalled the app. I have uninstalled and reinstalled the app since but that didn't solve the problem.
I use google play music with a Huawei P10 Lite

#479 <- please try the newest signed debuggable apk.
Thanks.


[FEAT] :sparkles: 404 page

Description
No response
Anything else?
No response

Add a 404 page to the admin app

Yep! Do you want to take up this issue @Tchakoumi?

yeah. asign it to me. I'll get to it by the end of the day

@Tchakoumi assigned you


Add Support for CUDA 2.3

From<EMAIL_ADDRESS>on June 22, 2009 16:21:24
Describe the New Feature: 1. Download the new toolkit and SDK.
2. Create a new parser if there is a new version of PTX.
3. Dump the .ptx files from each sdk sample into the test directory.
4. Create a test suite for the 2.3 sdk examples.  Make sure that it passes. Which milestone does the feature belong to? 0.4.0 Which branch does the new feature go in? Trunk
Original issue: http://code.google.com/p/gpuocelot/issues/detail?id=3

From<EMAIL_ADDRESS>on June 25, 2009 08:47:44
Hi, I tested CUDA 2.3 for support for PTX 1.5 which is the PTX code generated by
OpenCL NVIDIA compiler.. I have seen the PTX 1.5 code and varies a lot.. so I suspect
that also would be a nice addition to your package.. In case you want I can send PTX
code of some examples of the OpenCL SDK..
Perhaps I should have created an issue with "Add support for OpenCL PTX code"..
I attach code of transposition samples in OpenCL (1.5) vs NVIDIA CUDA SDK 2.2 (PTX
1.4) and a OpenCL report where I study OpenCL NVIDIA SDK.
note the functions have the same function signatures (parameters passed, shared
memory setup,etc..)
See example:
// Generated by NVIDIA PTX Backend for LLVM
.version 1.5
.target sm_13, texmode_independent
/* Global Launch Offsets /
.const[0] .s32 %global_block_offset[3];
..
/ Temporary variables for v2load/v4load/read /
.local .b8 vector_load_8[4];
..
/ Function Prototypes /
/ extern unsized array args for kernel 'transpose' /
.extern .shared .b8 transpose_param_4[]; / ptxbe_def_block /
.const[0] .u32 transpose_param_4_offset;
.const[0] .b32 %dummy_const; / needed to avoid an assert in driver /
/ Function Bodies */
.entry transpose (
.param .b32 transpose_param_0,
.param .b32 transpose_param_1,
.param .u32 transpose_param_2,
.param .u32 transpose_param_3)
.maxntid 16, 16, 1
{
.reg .b32 ptxbe_def_odata;
.reg .b32 ptxbe_def_idata;
vs.
.version 1.4
.target sm_13
// compiled with C:\CUDA\bin/../open64/lib//be.exe
// nvopencc built on 2009-05-02
.reg .u32 %ra<17>;
..
.entry _Z9transposePfS_ii (
.param .u64 __cudaparm__Z9transposePfS_ii_odata,
.param .u64 __cudaparm__Z9transposePfS_ii_idata,
.param .s32 __cudaparm__Z9transposePfS_ii_width,
.param .s32 __cudaparm__Z9transposePfS_ii_height)
{
Attachment: OpenCL Report.pdf ptx.txt transpose_kernel.ptx

From<EMAIL_ADDRESS>on June 25, 2009 09:05:06
I took a look at the OpenCL toolkit and the PTX1.5 samples that you provided.  The
code generated by PTX1.5 is definitely different from 1.4.  Here are the changes that
I noticed offhand:

.const[0] - I have no idea what they are trying to say with this
The compiler actually generates variables in the local address space
.maxntid x, y, z is used in entity declarations
Predication is actually used by the compiler for control flow other than branches

I agree that we want to support future versions of PTX including 1.5.  However, there
was no specification for 1.5 that I could find with CUDA 2.3 or OpenCL.  We could go
by the code examples generated by the OpenCL compiler, but we would need an ISA
specification to ensure that we can handle any PTX 1.5 binary.
I suggest waiting until an official specification is released before we start working
on this.

From<EMAIL_ADDRESS>on August 03, 2009 14:17:06
Added only the two examples that were different from 2.2.  These exposed a few minor
bugs involving new predicate instructions generated by the compiler.
Status: Started

From<EMAIL_ADDRESS>on September 02, 2009 06:39:32
I am closing this as fixed for now.  Every 2.3 example that I have run through Ocelot
has passed without any issues.
Status: Fixed


Integrity analysis - number of routes

Hi,
These 3 nodes 1 2 3 all show "The actual number of routes in this node (x) does not match the expected number of routes (y)." (with different values for x and y).
Last time I checked them they were fine. Also, on the nodes overview page they are not marked with a red E.
Has the calculation of expected number of routes changed? Is the "cluster relation" not counted anymore?

@UncleOwen thanks for reporting this problem
Yes, the calculation of expected number of routes has changed in release 3.2 (active since September 5th).
Your observation is correct: the "cluster relation"s were not counted anymore.
This problem has been fixed today. Your example nodes do not show a problem anymore now.
Before the calculation change in 3.2, routes were counted per network and not across networks.  This is still a problem in network facts pages like this one. Node 03 has 4 routes, but one of these routes is not part of network Landkreis Dahme-Spreewald. This problem still has to be solved.

In release 3.2.5, the code was changed so that routes are counted across networks now.


Allow to build static library

Fixes https://github.com/Esri/lerc/issues/158 and https://github.com/Esri/lerc/issues/192. Please review.

Looks good. Thanks for the help!


Multisig. Create multisig flow. Wrong rules for "Empty signatory" error

Description
When user add signatories, trigger an error, then delete one of signatories - he won't be able to add another one
Example:
https://github.com/user-attachments/assets/073660c7-5713-4c56-a12b-4b3846e0886d
Steps to Reproduce

Go to multisig creation flow
Select network
Add one signatory
Add the same signatory
Delete the first one
Try to add signatory

Expected Behavior
Can add new signatories
Actual Behavior
Trigger error - "Empty signatory" and can't add another signatory any more
Environment
https://github.com/novasamatech/nova-spektr/commit/be68d21b52909861baa21cc2edfc7e55c1692ae6

Status verification: ✅


Bug fix to Duplicate Key in Repeater thrown by angular

Without track by $index, people can get duplicate key error for unlimited nesting.
Link to the angular error page: http://bit.ly/1tRW15g

Hi Jim, you may want to revert my pull request. I found out yesterday that your old way is correct. My patch will solve the duplicated key error but IT WILL CAUSE SEVERAL WEIRD BEHAVIORS. For instance, when you drag a node to somewhere,  the accepting parent node will not accept it correctly. So please do revert my pull request.
Later I found out the duplicated key error for unlimited nesting originated from the new child node, which had the same hashKey as the parent node. Specifically, below is a short version of my newSubItem
$scope.newSubItem = function (scope) {
var nodeData = scope.$modelValue;
// this part copied the parent hashKey into child and was causing the problem
var childNode = JSON.parse(JSON.stringify(nodeData));
childNode.title = "blablah";
nodeData.nodes.push(childNode)
}


implemented student record report

Hi @Boffin-Omega I'm going through this now give me 10 min

@Boffin-Omega can you come to maintainer room I need your login credentials

!bounty 250


Extended external communication via D-BUS

External communication with cortile was implemented via unix domain sockets as discussed here https://github.com/leukipp/cortile/issues/14#issuecomment-1558112799.
The current implementation has some caveats, as it works in an asynchronous way. You have to listen for return values while you are requesting a state from cortile.
There were also feature requests that were either impossible to add or require extensive programming skills and knowledge of the X window backend.
To address these issues, I have opted to introduce a more efficient approach that uses quasi-synchronous interaction with cortile via D-BUS. Given that tray icon communication already relies on D-BUS, this change introduces no new dependencies.
For those who have developed custom event handlers/hook-up logic for cortile, I recommend transitioning to the new API as soon as possible.
The forthcoming external communication via D-BUS will supersede the now deprecated unix domain socket approach.
Details regarding the new D-BUS API will be published here and in the README.md file.

Starting with v2.5.0 dbus communication was unofficially added.
It`s still work in progress, but early beta testers may already have a look into it via running a separate cortile instance:
cortile dbus -help

There are also plans to allow custom cortile-addons for the broader community, by using a python wrapper package.

Starting with v2.5.1 dbus communication officially replaces the now removed unix domain socket communication.
Based on this, custom addons via python bindings #65 will be released.


Add description on how to import certificates into oscm containers

[Build] 17.5 2017/11/07
[Details]
After steps described in #36 are verified, please add description to documentation

The description is contained in the Operator's Guide.


Update the vignette

Hello!
I am using your scANVI tool but I have to report that the vignette is old. For example, there is the command
scvi$data$setup_anndata(adata_both, labels_key="celltype", batch_key="batch")
However, it worked with scvi-tool v=0.8. With version 0.15, the command is
scvi$model$SCVI$setup_anndata(adata_both, labels_key="celltype", batch_key="batch")
I think that it would be important to maintain the vignette update because many people, including people approaching the bioinformatic, have access.
Thanks!
Emanuela

@martinkim0 this can be fixed by just editing the file itself without running anything


Fix #48 - CSS Matrix Transformations for Independent Axis Zooming

First steps towards implementing v2 fix of #48. Currently passes all matrix math tests, but I need to work on the gestures further. The orginal wheel and mousedown are a difficult to reason about - any help would be appreciated.
I've also noticed https://github.com/d3/d3-selection/pull/210 Selection v2 is in development, I believe primarily the event global would be changed. Should we take the new event structure into consideration for this update?

Any opinion if this WIP should wait for d3-selection to move away from the event global? I'm available to wrap up this feature for d3-zoom.

Yeah, I’m deep in trying to get d3@6 released (d3/d3#3333) and that includes d3-selection@2’s removal of d3.event. I think this will likely have to wait for d3@7. But it’d be great if you wanted to continue working on this in parallel.


Add code used for benchmarks as example

I get an error when running the runtime benchmark (possible also for the other ones):
$ python benchmark_detectors.py runtime
Downloading ltdb: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [01:15<00:00, 10.72s/it]
Storing results to /Users/clemens/Repositories/sleepecg/examples/benchmark/results/runtime__2021_08_18__11_55_55.csv
Traceback (most recent call last):
  File "/Users/clemens/Repositories/sleepecg/examples/benchmark/benchmark_detectors.py", line 41, in <module>
    with open(csv_filepath, 'w', newline='') as csv_file:
FileNotFoundError: [Errno 2] No such file or directory: './results/runtime__2021_08_18__11_55_55.csv'

Maybe this is because the results folder does not exist?

I get an error when running the runtime benchmark (possible also for the other ones):
$ python benchmark_detectors.py runtime
Downloading ltdb: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [01:15<00:00, 10.72s/it]
Storing results to /Users/clemens/Repositories/sleepecg/examples/benchmark/results/runtime__2021_08_18__11_55_55.csv
Traceback (most recent call last):
  File "/Users/clemens/Repositories/sleepecg/examples/benchmark/benchmark_detectors.py", line 41, in <module>
    with open(csv_filepath, 'w', newline='') as csv_file:
FileNotFoundError: [Errno 2] No such file or directory: './results/runtime__2021_08_18__11_55_55.csv'

Maybe this is because the results folder does not exist?

right, fixed

I'm a big fan of pathlib, what about using that instead of os?

Also, Pylance is showing a warning (Import "utils" could not be resolved) for the import
from utils import evaluate_single, reader_dispatch

Should we ignore it? The warning disappears when you make that a relative import, but I don't know if it is common to use relative imports when you are not referring to a package.

The first call to our Numba detector is very slow because of the JIT compilation, so the first benchmark result (5 min signal length) is not representative. We should trigger the compilation manually as a first step.

Also, Pylance is showing a warning (Import "utils" could not be resolved) for the import
from utils import evaluate_single, reader_dispatch

Should we ignore it? The warning disappears when you make that a relative import, but I don't know if it is common to use relative imports when you are not referring to a package.

The warning disappears but you'll get this instead ;)
ImportError: attempted relative import with no known parent package

I guess we'll leave the import as is and just ignore the warning then. Pylance is still weird sometimes.

For signal length 10 minutes I get this warning:
  mean runtime:  0.40434s ->   25 minutes analyzed per second # biosppy-hamilton
/Users/clemens/Repositories/sleepecg/.venv/lib/python3.9/site-packages/scipy/interpolate/fitpack2.py:280: UserWarning:
The maximal number of iterations maxit (set to 20 by the program)
allowed for finding a smoothing spline with fp=s has been reached: s
too small.
There is an approximation returned but the corresponding weighted sum
of squared residuals does not satisfy the condition abs(fp-s)/s < tol.
  warnings.warn(message)

Is this expected/OK?

For signal length 10 minutes I get this warning:
  mean runtime:  0.40434s ->   25 minutes analyzed per second # biosppy-hamilton
/Users/clemens/Repositories/sleepecg/.venv/lib/python3.9/site-packages/scipy/interpolate/fitpack2.py:280: UserWarning:
The maximal number of iterations maxit (set to 20 by the program)
allowed for finding a smoothing spline with fp=s has been reached: s
too small.
There is an approximation returned but the corresponding weighted sum
of squared residuals does not satisfy the condition abs(fp-s)/s < tol.
  warnings.warn(message)

Is this expected/OK?

I'd say yes, heartpy manages to detect something nonetheless 🤷.

The first call to our Numba detector is very slow because of the JIT compilation, so the first benchmark result (5 min signal length) is not representative. We should trigger the compilation manually as a first step.

where would you suggest to do that?

where would you suggest to do that?

Maybe run it on a very short data segment of a data set that is part of the benchmark (and of course only do that if the user included sleepecg-numba)?

I feel like we could add a simpler visualization for the runtime benchmark. It looks like algorithms are pretty independent of signal length, so we could add a bar chart showing algorithm runtime per minute of signal. Or maybe analyzed minutes per second (I think I'd prefer the former though). WDYT?

I feel like we could add a simpler visualization for the runtime benchmark. It looks like algorithms are pretty independent of signal length, so we could add a bar chart showing algorithm runtime per minute of signal. Or maybe analyzed minutes per second (I think I'd prefer the former though). WDYT?

Most of them are independent, just heartpy and biosspy-hamilton get slower for longer signals. Therefore I'd prefer to keep the current visualization.

OK! Can we add that figure you just showed?
Final points:

How does sampling frequency influence the runtime? Hz is missing in the figure caption in fs=128.
I don't like that the benchmark needs to be terminated manually because of two slow detectors. Can we somehow make it so that users can just run the benchmark and it completes after some finite time?

OK! Can we add that figure you just showed?

Done, do you want to show it in the readme as well?

How does sampling frequency influence the runtime? Hz is missing in the figure caption in fs=128.

It's just included for the sake of completeness (although wfdb-xqrs does get slower with increasing fs, but that's not shown here).

I don't like that the benchmark needs to be terminated manually because of two slow detectors. Can we somehow make it so that users can just run the benchmark and it completes after some finite time? Maybe just limit the maximum time to 600 minutes in config.yml?

The first option would likely require starting a second process watching over the main one. I'd go with your second idea, since the plots will still show the performance decreasing with signal length.

I think some information on how many data sets are used from the used database would be helpful. In the code, you seem to limit this to 25, although for the runtime benchmark there are only 7 * 2 data sets available anyway.

True, that shouldn't be there 😅. The benchmark script will now print how many records have been read.

No need to include it in the main README.md. But we could drop the last code block (detector calls) and instead mention at the beginning of the Performance Evaluation section that the code is available in examples/benchmark.

True, that shouldn't be there 😅. The benchmark script will now print how many records have been read.

I'm still confused, because now it prints "15 records". There are 7 files, each of which contains 2 ECG channels, and one possibly 3. Could the message be more informative and include these details? At least the number of files should be printed (i.e. "7 files containing 15 records").

True, that shouldn't be there 😅. The benchmark script will now print how many records have been read.

I'm still confused, because now it prints "15 records". There are 7 files, each of which contains 2 ECG channels, and one possibly 3. Could the message be more informative and include these details? At least the number of files should be printed (i.e. "7 files containing 15 records").

It could, though that would require changes in io.ecg_readers, since those are generators yielding from two nested loops (over the files and over the signals included in one file).

It could, though that would require changes in io.ecg_readers, since those are generators yielding from two nested loops (over the files and over the signals included in one file).

OK, then let's leave it as is (this is maybe something for later, I really think this would be valuable information). But I'm still curious: how many ECG signals does each of the seven files have? Why don't all of them just have two?

OK, then let's leave it as is (this is maybe something for later, I really think this would be valuable information).

👍

But I'm still curious: how many ECG signals does each of the seven files have? Why don't all of them just have two?

Most have two, but 15814 has three for some reason... there isn't any information on PhysioNet :/

Final two comments:

Let's mention the record where heartpy fails with the BadSignalWarning explicitly in the "Known issues" section.
I'd scale the y-axis of the correlation figure from -1 to +1.

Then this if really ready to be merged! Thanks for your patience @hofaflo!

Done, thanks for your thoroughness! :)

Before I merge this (just waiting for the CIs to go green), I have two questions:

I was wondering if people will find the benchmark folder in their locally installed package. If someone wants to run the benchmark, what is the easiest way to get to the folder?
Currently, the downloaded data sets go into the examples/benchmark folder. Is this a good location? What if people download some database files elsewhere? It's unlikely that they will put it in the examples/datasets folder. Should we create a default location somewhere in the home directory (e.g. ~/.sleepecg)?

We also need to add the examples (and maybe also doc and possibly others) to the sdist I think.

I was wondering if people will find the benchmark folder in their locally installed package. If someone wants to run the benchmark, what is the easiest way to get to the folder?

I guess cloning the repo would be the easiest way right now 🤔

Currently, the downloaded data sets go into the examples/benchmark folder. Is this a good location? What if people download some database files elsewhere? It's unlikely that they will put it in the examples/datasets folder. Should we create a default location somewhere in the home directory (e.g. ~/.sleepecg)?

I've chosen that location since it will exist for everyone and not mess up any other folder structure they might have created. Changing it in config.yml to find preexisting datasets should be straightforward, but we can also set ~/.sleepecg as the default, if you prefer!

We also need to add the examples (and maybe also doc and possibly others) to the sdist I think.

Yep, your idea from here should take care of that, right?

I guess cloning the repo would be the easiest way right now 🤔

True. Should we mention this explicitly somewhere?

I've chosen that location since it will exist for everyone and not mess up any other folder structure they might have created. Changing it in config.yml to find preexisting datasets should be straightforward, but we can also set ~/.sleepecg as the default, if you prefer!

But what folder structure would creating and using ~/.sleepecg mess up? If people continue to use SleepECG after running the benchmark, they would immediately have all the already downloaded data sets if the default location was ~/.sleepecg.

Yep, your idea from here should take care of that, right?

Yes, but I'd add each required directory separately.

True. Should we mention this explicitly somewhere?

Not sure, what's the usual way of using package examples?

But what folder structure would creating and using ~/.sleepecg mess up?

None, but I only though about e.g. ~/datasets :D

If people continue to use SleepECG after running the benchmark, they would immediately have all the already downloaded data sets if the default location was ~/.sleepecg.

👍

Would you save the benchmark results to ~/.sleepecg/benchmark_results/ then?

Not sure, what's the usual way of using package examples?

Not sure either, but maybe we can provide a console entry point in setup.cfg which runs the benchmarks? Then users don't have to know where the benchmark code is located on their computer. For example, we could call it sleepecg_benchmark?

None, but I only though about e.g. ~/datasets :D

OK, let's make ~/.sleepecg the default then. We could even add that as a default argument for the readers?

Would you save the benchmark results to ~/.sleepecg/benchmark_results/ then?

Hm, tough questions. Having data in that hidden folder is fine because most users will never want to access the data directly. However, users will want to open their result CSV and SVG files, and that hidden location is not ideal. Maybe just store them in the CWD?

Not sure either, but maybe we can provide a console entry point in setup.cfg which runs the benchmarks? Then users don't have to know where the benchmark code is located on their computer. For example, we could call it sleepecg_benchmark?

I like the idea, though that would require examples/benchmark to be a package so imports will work and I'm not sure what that would do to the package installation process... I'd stick with the "clone and call the script" approach.

OK, let's make ~/.sleepecg the default then.

I opted for ~/.sleepecg/datasets now, in case we want to put things other than datasets there as well.

We could even add that as a default argument for the readers?

Good idea, it's on my TODO-list.

Maybe just store them in the CWD?

👍

Thanks @hofaflo! Great work in getting this PR in 🚀!


chore: add integration tests for module storage/fsx-lustre

Issue #, if available:

Closes #228

Changes

add integration tests for module storage/fsx-lustre

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

AWS CodeBuild CI Report

CodeBuild project: IDFModuleTestsInfrastructur-59JoFoVH64CI
Commit ID: 1ab1556edea12760e64e1ba56ea8c4fe8440736a
Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: IDFModuleTestsInfrastructur-59JoFoVH64CI
Commit ID: c4dc26279dc6b2e9e59a4efe528303e1b32f5036
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: IDFModuleTestsInfrastructur-59JoFoVH64CI
Commit ID: 189173be784507109b9f5e0aa2540d08c30eb430
Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


Problem with post install scripts when creating a project

I'm having a issue when trying to use the symfony installer to create a new LTS Symfony project, the error I am facing is in the post-install scripts.
My environment information:
php --version
PHP 7.3.2 (cli) (built: Feb  5 2019 18:21:22) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies

composer --version
Composer version 1.8.4 2019-02-11 10:52:10

symfony -v
Symfony CLI version v4.3.0 (c) 2017-2019 Symfony SAS

The complete output:
* Creating a new Symfony 3.4 project with Composer
  (running /usr/bin/composer create-project symfony/website-skeleton lts 3.4.*)

Installing symfony/website-skeleton (v<IP_ADDRESS>)
  - Installing symfony/website-skeleton (v<IP_ADDRESS>): Loading from cache
Created project in lts
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 90 installs, 0 updates, 0 removals
  - Installing ocramius/package-versions (1.2.0): Loading from cache
  - Installing symfony/flex (v1.2.0): Loading from cache
  - Installing doctrine/collections (v1.4.0): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.10.0): Loading from cache
  - Installing doctrine/lexer (v1.0.1): Loading from cache
  - Installing doctrine/inflector (v1.2.0): Loading from cache
  - Installing doctrine/cache (v1.6.2): Loading from cache
  - Installing doctrine/annotations (v1.4.0): Loading from cache
  - Installing doctrine/common (v2.7.3): Loading from cache
  - Installing symfony/doctrine-bridge (v3.4.22): Loading from cache
  - Installing doctrine/doctrine-cache-bundle (1.3.5): Loading from cache
  - Installing doctrine/instantiator (1.0.5): Loading from cache
  - Installing symfony/yaml (v3.4.22): Loading from cache
  - Installing psr/log (1.1.0): Loading from cache
  - Installing symfony/debug (v3.4.22): Loading from cache
  - Installing symfony/console (v3.4.22): Loading from cache
  - Installing zendframework/zend-eventmanager (3.2.1): Loading from cache
  - Installing zendframework/zend-code (3.1.0): Loading from cache
  - Installing ocramius/proxy-manager (2.0.4): Loading from cache
  - Installing doctrine/dbal (v2.5.13): Loading from cache
  - Installing doctrine/migrations (v1.5.0): Loading from cache
  - Installing egulias/email-validator (2.1.7): Loading from cache
  - Installing jdorn/sql-formatter (v1.2.17): Loading from cache
  - Installing phpdocumentor/reflection-common (1.0.1): Loading from cache
  - Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
  - Installing psr/cache (1.0.1): Loading from cache
  - Installing psr/container (1.0.0): Loading from cache
  - Installing psr/simple-cache (1.0.1): Loading from cache
  - Installing symfony/http-foundation (v3.4.22): Loading from cache
  - Installing symfony/event-dispatcher (v3.4.22): Loading from cache
  - Installing symfony/http-kernel (v3.4.22): Loading from cache
  - Installing symfony/routing (v3.4.22): Loading from cache
  - Installing symfony/finder (v3.4.22): Loading from cache
  - Installing symfony/filesystem (v3.4.22): Loading from cache
  - Installing symfony/dependency-injection (v3.4.22): Loading from cache
  - Installing symfony/config (v3.4.22): Loading from cache
  - Installing symfony/class-loader (v3.4.22): Loading from cache
  - Installing symfony/polyfill-apcu (v1.10.0): Loading from cache
  - Installing symfony/cache (v3.4.22): Loading from cache
  - Installing symfony/framework-bundle (v3.4.22): Loading from cache
  - Installing sensio/framework-extra-bundle (v5.2.4): Loading from cache
  - Installing symfony/asset (v3.4.22): Loading from cache
  - Installing symfony/dotenv (v3.4.22): Loading from cache
  - Installing symfony/expression-language (v3.4.22): Loading from cache
  - Installing symfony/inflector (v3.4.22): Loading from cache
  - Installing symfony/property-access (v3.4.22): Loading from cache
  - Installing symfony/options-resolver (v3.4.22): Loading from cache
  - Installing symfony/intl (v3.4.22): Loading from cache
  - Installing symfony/polyfill-intl-icu (v1.10.0): Loading from cache
  - Installing symfony/form (v3.4.22): Loading from cache
  - Installing monolog/monolog (1.24.0): Loading from cache
  - Installing symfony/monolog-bridge (v3.4.22): Loading from cache
  - Installing doctrine/orm (v2.5.14): Loading from cache
  - Installing doctrine/doctrine-bundle (1.10.2): Loading from cache
  - Installing doctrine/doctrine-migrations-bundle (v1.3.2): Loading from cache
  - Installing symfony/orm-pack (v1.0.6): Loading from cache
  - Installing symfony/security (v3.4.22): Loading from cache
  - Installing symfony/security-bundle (v3.4.22): Loading from cache
  - Installing symfony/serializer (v3.4.22): Loading from cache
  - Installing symfony/property-info (v3.4.22): Loading from cache
  - Installing webmozart/assert (1.4.0): Loading from cache
  - Installing phpdocumentor/reflection-docblock (4.3.0): Loading from cache
  - Installing symfony/serializer-pack (v1.0.2): Loading from cache
  - Installing swiftmailer/swiftmailer (v6.1.3): Loading from cache
  - Installing symfony/swiftmailer-bundle (v3.2.5): Loading from cache
  - Installing symfony/translation (v3.4.22): Loading from cache
  - Installing symfony/validator (v3.4.22): Loading from cache
  - Installing psr/link (1.0.0): Loading from cache
  - Installing fig/link-util (1.0.0): Loading from cache
  - Installing symfony/web-link (v3.4.22): Loading from cache
  - Installing symfony/var-dumper (v3.4.22): Loading from cache
  - Installing twig/twig (v2.6.2): Loading from cache
  - Installing symfony/twig-bridge (v3.4.22): Loading from cache
  - Installing symfony/web-profiler-bundle (v3.4.22): Loading from cache
  - Installing symfony/twig-bundle (v3.4.22): Loading from cache
  - Installing symfony/stopwatch (v3.4.22): Loading from cache
  - Installing symfony/profiler-pack (v1.0.4): Loading from cache
  - Installing symfony/monolog-bundle (v3.3.1): Loading from cache
  - Installing symfony/debug-bundle (v3.4.22): Loading from cache
  - Installing easycorp/easy-log-handler (v1.0.7): Loading from cache
  - Installing symfony/debug-pack (v1.0.7): Loading from cache
  - Installing symfony/dom-crawler (v3.4.22): Loading from cache
  - Installing nikic/php-parser (v4.2.1): Loading from cache
  - Installing symfony/maker-bundle (v1.11.3): Loading from cache
  - Installing symfony/phpunit-bridge (v4.2.3): Loading from cache
  - Installing symfony/css-selector (v3.4.22): Loading from cache
  - Installing symfony/browser-kit (v3.4.22): Loading from cache
  - Installing symfony/test-pack (v1.0.2): Loading from cache
  - Installing symfony/process (v3.4.22): Loading from cache
  - Installing symfony/web-server-bundle (v3.4.22): Loading from cache
Generating autoload files
ocramius/package-versions:  Generating version class...
ocramius/package-versions: ...done generating version class
Symfony operations: 20 recipes (6837f7ec0cdb6514a83840f7f15e9328)
  - Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/framework-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring doctrine/annotations (>=1.0): From github.com/symfony/recipes:master
  - Configuring doctrine/doctrine-cache-bundle (>=1.3.5): From auto-generated recipe
  - Configuring symfony/console (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/routing (>=3.3): From github.com/symfony/recipes:master
  - Configuring sensio/framework-extra-bundle (>=5.2): From github.com/symfony/recipes:master
  - Configuring doctrine/doctrine-bundle (>=1.6): From github.com/symfony/recipes:master
  - Configuring doctrine/doctrine-migrations-bundle (>=1.2): From github.com/symfony/recipes:master
  - Configuring symfony/security-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/swiftmailer-bundle (>=2.5): From github.com/symfony/recipes:master
  - Configuring symfony/translation (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/web-profiler-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/twig-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/monolog-bundle (>=3.1): From github.com/symfony/recipes:master
  - Configuring symfony/debug-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring easycorp/easy-log-handler (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/maker-bundle (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/phpunit-bridge (>=4.1): From github.com/symfony/recipes:master
  - Configuring symfony/web-server-bundle (>=3.3): From github.com/symfony/recipes:master
Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!
!!  In UnitOfWork.php line 2636:
!!
!!    Warning: "continue" targeting switch is equivalent to "break". Did you mean
!!     to use "continue 2"?
!!
!!
!!
Script @auto-scripts was called via post-install-cmd

  unable to run /usr/bin/composer create-project symfony/website-skeleton lts 3.4.*: exit status 1

Error reported as #58c566b6ebc24aa09f1e548375bd9533

That's because of an issue in doctrine/orm (v2.5.14). Only doctrine ORM 2.6.3 has the fixes for PHP 7.3 compatibility.
It is weird that the 2.5 release is used here. Can you run composer why-not doctrine/orm 2.6.3 to see why it was not selected ?

Anyway, your issue is not related to this symfony-installer project, as you are not using it here.

This is the output of the composer why-not doctrine/orm 2.6.3
doctrine/orm              v2.6.3  requires          doctrine/annotations (~1.5)
symfony/website-skeleton  -       does not require  doctrine/annotations (but v1.4.0 is installed)
doctrine/orm              v2.6.3  requires          doctrine/dbal (^2.6)
symfony/website-skeleton  -       does not require  doctrine/dbal (but v2.5.13 is installed)
doctrine/orm              v2.6.3  requires          doctrine/instantiator (~1.1)
symfony/website-skeleton  -       does not require  doctrine/instantiator (but 1.0.5 is installed)

Yeah, I see it is not related to symfony-installer... Maybe I can help, but, where should I check for the skeleton configuration to upgrade doctrine/orm ?


Add MKL variant (supporting pardisomkl linear solver)

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

This adds a Pardiso MKL build variant (in addition to the original mumps/metis build).
I followed the guidelines from the official install instructions, which state:

If you want to compile Ipopt with the Pardiso library that is included in Intel MKL, it is sufficient to ensure that MKL is used for the linear algebra routines (Blas/Lapack), see BLAS and LAPACK.

Thus, to build the Pardiso MKL variant:

ask for the MKL variants of liblapack and libblas
add mkl as a run dependency

I adjusted the compiler flags appropriately (I think). The basic test passes on Linux. I did not do any local testing for Windows, so there may be some iterations to get that working.
Relates to #22

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

Jinja2 variable references are suggested to take a {{<one space><variable name><one space>}} form. See lines [20].

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

It isn't clear to me if you are making this optional or not. mkl should be an optional dependency to this package, as many systems only run with openblas or other blas implementations. conda forge handles switching between blas variants as described here: https://conda-forge.org/docs/maintainer/knowledge_base.html#blas. But I'm not sure exactly how to handle this, as we don't want to force an mkl install with this package.

I see now that there are two build variants. What does this look like for the user? How would they install one or the other variant?

I see now that there are two build variants. What does this look like for the user? How would they install one or the other variant?

This will produce two distinct packages with different sets of dependencies.
If you don't care which one you want:
conda install -c conda-forge ipopt

I don't know which is "preferred" if you don't specify a variant.
If you want a specific variant, use a pattern match on the build string, e.g.
conda install -c conda-forge ipopt=*=*mumps
conda install -c conda-forge ipopt=*=*pardisomkl

This also works in an enviornment.yml file
dependencies:
  - ipopt * *pardisomkl

If you specify the pardisomkl build, this will necessarily install the mkl package due to the dependencies of the pardisomkl variant of this package.

Ok, cool. Didn't know all that was possible. Thanks!

Me neither, until very recently!
All the builds are passing now, but I'm pretty new to the conda-forge ecosystem, so we might want to get some more eyes on this before merging.
A few questions:

It looks like support for Windows was dropped with 3.14.0 - was this intentional? I've updated bld.bat in this PR, but it's totally untested.
When installing the pardisomkl variant, the environment installs openblas versions of libblas and liblapack. I would have expected the mkl variants. Does ipopt mytoy.nl sufficiently test the linear solve?

I think the CI will only build against the reference implementations of blas/lapack (netlib) unless you force it to do otherwise.

It looks like support for Windows was dropped with 3.14.0 - was this intentional?

It seems so from the last PR. I'm not sure why it was dropped instead of fixing it in the PR.

does ipopt mytoy.nl sufficiently test the linear solve?

You like have to set the option in IPOPT to select the solver for the test problem to use it.

Thanks a lot @whophil ! I was wondering, there is any specific reason why you need to have a variant, instead of enabling both pardisomkl and mumps as part of the same build and then leaving the user to specify which linear solver to use at runtime using linear_solver parameter? In the future we may want to add more linear solvers (for example spral), and having variant for each one may not be the convenient option.

Thanks a lot @whophil ! I was wondering, there is any specific reason why you need to have a variant, instead of enabling both pardisomkl and mumps as part of the same build and then leaving the user to specify which linear solver to use at runtime using linear_solver parameter? In the future we may want to add more linear solvers (for example spral), and having variant for each one may not be the convenient option.

I read a bit more the OP, and I get it know. However, unless I am not getting something, it should be perfectly possible to build ipopt by linking mkl and still use mumps/metis? Perhaps the variant should be related to which blas/lapack version is used at compilation/link time, rather then to the enabled linear solver?

If you build against mkl with the pardiso link, what will happen when you only have openblas available in your conda env?

If you build against mkl with the pardiso link, what will happen when you only have openblas available in your conda env?

I am not 100% sure, but I guess normal blas/lapack function will work fine, but loading the library will fail because some symbols from pardisomkl will not be found. For that I think that something like with-mkl-runtime-dependency and without-mkl-runtime-dependency make more sense/are more flexible as variants instead of mkl vs mumps/metis .

It would be nice if you happen to have mkl installed, that the pardiso solver would then be available. This would allow you to switch among different blaslapack variants in your conda env and ipopt wouldn't have to be reinstalled. It does seem likely that building against mkl in the recipe here, would likely allow that to happen. But one of the conda-forge experts would have to confirm. Or we'd have to test it. Offhand I'm not sure how one would test with/without mkl in the test section of the recipe to confirm this.

It would be nice if you happen to have mkl installed, that the pardiso solver would then be available.

This seems possible with regular Pardiso, quote from https://github.com/coin-or/Ipopt/blob/ea38b885db4ba947932a3eec569d661d498f6aa0/doc/install.dox#L733 :

Ipopt can load HSL or Pardiso libraries at runtime.

Not sure if this is possible with PardisoMKL as of Ipopt 3.14 .

I appreciate all the discussion! I'm new to IPOPT so my knowledge has a lot of gaps, but I'm hoping we can find a solution that makes sense.
Of the linear solvers listed in the IPOPT docs, which ones can be selected at runtime? In an ideal world, the conda package would support all of those, assuming the user can provide the appropriate shared lib at runtime - likely by conda install for the free solvers, or in LD_LIBRARY_PATH for those with license restrictions. For the conda-forge build, we will probably need to skip those which require licensed libraries at compile time.
@traversaro brings up a good point - variants are only needed if the different solvers have compile-time requirements that conflict. Is that true if we support Pardiso MKL? If we use the MKL variants of lapack and blas at compile-time, will that actually break something if we choose not to use Pardiso MKL as the linear solver? If so, we do indeed need a nomkl and mkl variant.
The original intent of this PR was just to add support for Pardiso MKL, which is probably how I ended up with the mumps/pardiso variants, but I'm happy to rescope/refactor so that this makes sense and supports other solvers in the future.

I think you have to test it to see if it works. Maybe figuring out how you can test an environment with and without mkl in this recipe would let you see if you can build against mkl and then test against openblas.

Maybe this downstream tests could let you switch blas variants: https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#downstream-tests

As a first try you can build this package as you have it now, locally. Then create a new environment with the mkl variant. Switch the blas implementation with https://conda-forge.org/docs/maintainer/knowledge_base.html#switching-blas-implementation and see if ipopt still runs if the linear solver is set to mumps.

Maybe this downstream tests could let you switch blas variants: https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#downstream-tests

I believe specifying a downstream will run the tests of the downstream package, with the current package installed. So I suppose that would mean that we need to create a package which can run the ipopt tests (i.e., it needs to have ipopt sources) but also requires MKL. Am I thinking about this correctly?
On the conda-forge gitter, the recommendation at the moment is to update conda-build to support test variants... See discussion around https://gitter.im/conda-forge/conda-forge.github.io?at=60d2aa996c992105fd94a412

Yes, it does seem that test variants are needed in the meta.yaml file and it doesn't seem to have support for that.

I thought the downstream thing could be used to fake a test variant.

If you can figure out how to test it locally and confirm it is working, that would be sufficient for me.

Here's my train of thought. Does this make sense to you?

Support for the Pardiso MKL linear solver requires mkl libs to be available at compile time.
If mkl is available at compile time, then the ipopt shared lib links to mkl shared libs. So if mkl is available at compile time, mkl needs to be available at run time.
We still wish to have a version of ipopt which does not require mkl.
Therefore, a MKL variant of ipopt is required to have Pardiso MKL.

I've updated the recipe so it now builds nomkl and mkl variants.

The mumps linear solver is supported (and tested) in both variants.
The Pardiso MKL linear solver is tested in only the mkl variant.

It should be easy to add more linear solvers (like spral) later on, if the solver libraries can be made available at both compile and run-time.
I think this is ready for review again. I do want to point out that Windows is still excluded (and the changes to bld.bat are thus untested). We can bring Windows support back in a separate PR, if desired.

So if mkl is available at compile time, mkl needs to be available at run time.

I'm not sure that is true. I don't think dynamically linking against a certain version of blas/lapack at compile time means you can't swap it out with another at run time. The only thing I'm not sure of is if compiling against mkl blas/lapack + paradiso somehow prevents the hotswapping at runtime.
I recommend compiling ipopt aginst mkl+paradiso locally, then switching to openblas for run time and see if it throws any errors when running an example. If that works, we only need 1 variant.

Reading here: https://conda-forge.org/docs/maintainer/knowledge_base.html#blas
It looks like you can get a matrix of blas builds with:
requirements:
  host:
    - {{ blas_impl }}
  run:
    - libblas * *{{ blas_impl }}
    - {{ blas_impl }}

You currently have a specific build for mkl it seems:
requirements:
  host:
    - mkl
  run:
    - libblas * *mkl
    - mkl

If you do the latter, then just check locally if the build works with openblas by creating an environment with your build and switching:
conda install "libblas=*=*openblas"

I don't think dynamically linking against a certain version of blas/lapack at compile time means you can't swap it out with another at run time. The only thing I'm not sure of is if compiling against mkl blas/lapack + paradiso somehow prevents the hotswapping at runtime.
I recommend compiling ipopt aginst mkl+paradiso locally, then switching to openblas for run time and see if it throws any errors when running an example. If that works, we only need 1 variant.

It is possible to install the mkl variant of ipopt alongside libblas * *openblas. In this environment, ipopt runs using both mumps and pardisomkl linear solvers.
However this environment still requires mkl! When mkl libs are available during compile, the ipopt configure process finds the Pardiso MKL solver and links to some MKL libs directly. The ldd output below shows this - the libipopt.so used here is generated by the 3.14.0-mkl variant at f2da24cdd41f34bdf4ad2bb1ae53a426774e399f
(base) phil@phil-p1:~/Desktop$ ldd libipopt.so
	linux-vdso.so.1 (0x00007ffc187b9000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f25d6773000)
	libdmumps_seq-5.2.1.so => not found
	libmumps_common_seq-5.2.1.so => not found
	libpord_seq-5.2.1.so => not found
	libmpiseq_seq-5.2.1.so => not found
	libesmumps-6.so => not found
	libscotch-6.so => not found
	libscotcherr-6.so => not found
	libmetis.so => not found
	libgfortran.so.5 => /lib/x86_64-linux-gnu/libgfortran.so.5 (0x00007f25d64a9000)
	libmkl_intel_lp64.so.1 => not found
	libmkl_sequential.so.1 => not found
	libmkl_core.so.1 => not found
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f25d64a1000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f25d62bf000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f25d6170000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f25d5f7e000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f25d6a19000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f25d5f61000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f25d5f3e000)
	libquadmath.so.0 => /lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f25d5ef4000)

If I understand correctly, we need to maintain a version of ipopt which doesn't require MKL to run. Therefore, I still think we need the variant.

I see that you can install variants like this:
conda install -c conda-forge ipopt=*=*mkl
conda install -c conda-forge ipopt=*=*nomkl

What will happen when you do:
conda install -c conda-forge ipopt

?

I am not able to find anything explicitly documenting the behavior, but I would guess standard conda rules apply - you will get the latest version that is compatible with your environment.
In the case that your supports both nomkl and mkl variants, I don't know if the behavior is defined.
On my local machine I get nomkl but that could be totally chance.
(cf) phil@phil-p1:~/repos/ipopt-feedstock$ conda create --prefix=./deleteme -c file://$(pwd)/build_artifacts -c conda-forge --override-channels ipopt
Collecting package metadata (current_repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
  current version: 4.10.1
  latest version: 4.10.2

Please update conda by running

    $ conda update -n base conda

## Package Plan ##

  environment location: /home/phil/repos/ipopt-feedstock/deleteme

  added / updated specs:
    - ipopt

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ipopt-3.14.0               |            nomkl         1.2 MB  file:///home/phil/repos/ipopt-feedstock/build_artifacts
    ------------------------------------------------------------
                                           Total:         1.2 MB

In the case that your supports both nomkl and mkl variants, I don't know if the behavior is defined.

I do not know which one is the higher priority as it is, but I think in this case you can use something called "track_feature" to decide which one has the higher priority, I never used it but I learned about them in a recent comment by @wolfv  in https://github.com/mamba-org/mamba/issues/986#issuecomment-855836169, looking on google I was able to find some docs in https://github.com/mamba-org/mamba/issues/986#issuecomment-855836169 but I do not know anything more on this.

I'm good with this PR as it stands. If you want to add the track features, that's fine by me too. Thanks @whophil !

Hey, thanks @traversaro for the pin.
Speaking for "mamba" I'd recommend to either have a track_feature on the non-default variant itself, or to make sure to have a "first-level" dependency that has a track feature.
I've written down how mamba is handling this: https://mamba.readthedocs.io/en/latest/advanced_usage/package_resolution.html
The best docs for conda are probably here (under "Running the solver") https://www.anaconda.com/blog/understanding-and-improving-condas-performance

Thanks @wolfv for the references!
For this project - if we were to use track_features to weigh down one variant, should it be the mkl or nomkl version, and why?
If we prefer the mkl variant, then the user will be able to use Pardiso MKL linear solver if their environment/system supports it.
If we prefer the nomkl variant, then the user will need to explicitly specify ipopt * *mkl in order use the Pardiso MKL solver.

I don't know if it is possible, but if MKL is installed in the environment it should install the ipopt mkl variant, otherwise not.
If you make the preference MKL with track features, will it work like that?

If we prefer the mkl variant, then the user will be able to use Pardiso MKL linear solver if their environment/system supports it.

That statement sounds like it will work like that.

Update: Windows w/ MKL is giving me some issues. And it seems like the CMake files have some syntax errors when PARDISO_MKL=1. If anybody has experience building Windows w/ MKL please feel free to chime in.

The original CMake build system we base this on was originally made for Ipopt 3.12, and we adapted it for 3.13 and 3.14 . Given that the distinction between Pardiso and Pardiso MKL was introduced (if I am not wrong) in Ipopt 3.14, probably it needs to be adapted. I can look into that during next week if you need help.

This is a simple example of using track_features to de-prioritize a variant: https://github.com/conda-forge/topologytoolkit-feedstock/blob/b1184ce7e2c4be045e0a29cb4e005eee60bed453/recipe/meta.yaml#L37 .

Sorry @galpin , I had forgotten about this also - and looking back at the changes, I'm afraid to say I hardly remember those as well. From what I recall, this was OK pending the Window build working. If somebody can support that, we can likely get this merged. If not, I am fine closing the PR, as my needs have changed and I don't need this immediately.

going stale


Update readme: Add command to push distribute GPG keys

Add command to push distribute GPG keys

nice! thank you


Integrate Signal App as a service

I'd love to be able to use Signal in Franz!
https://signal.org/en/#signal

Interested, too.

I'd like to see this as well but I think it is currently possible because there is no web version?

Yeah this is definitely impossible for franz to do.


Updated to version 3.1.1

See https://bastion.js.org/changes for details.

Windows and Linux build passed. macOS build is in backlog, due to high traffic in Travis CI, currently (See image below). Been waiting for 20+ minutes now, still in backlog, so canceling the build.


(Low-Hanging Fruit) Wiki action command incorrect syntax

In your wiki, the action commands' syntax is incorrect. I have only tested the add command but I figure it's probably the same on the rest.
The command listed is /znpcs action add <id> CMD <command> when it should be /znpcs action <id> add CMD <command>
Running the command with the syntax shown in the wiki results in a message reading "Hey!, The inserted number/id does not look like a number.."
I would do it myself but I don't think Github supports wiki PRs and you have community editing disabled.

You are right, I fixed it on the wiki


Can only run tests on concrete device?

Describe the bug
After going through the setup I am unable to run the new test in xcode i am presented with
Cannot test target “RunnerUITests” on “Any iOS Device”: Tests must be run on a concrete device

in the cli i run patrol test --target integration_test/app_test.dart --flavor development --verbose
and get the output
	Running pod install...                                              7.0s
$ xcodebuild build-for-testing -workspace Runner.xcworkspace -scheme Runner -xcconfig Flutter/Debug.xcconfig -configuration Debug-development -sdk iphonesimulator -destination generic/platform=iOS Simulator -quiet -derivedDataPath ../build/ios_integ OTHER_SWIFT_FLAGS=$(inherited) -D PATROL_ENABLED
	2023-02-09 09:56:04.411 xcodebuild[46831:7016422] Writing error result bundle to /var/folders/x1/6k7b02pd59361l_frrzgh_w80000gq/T/ResultBundle_2023-09-02_09-56-0004.xcresult
	xcodebuild: error: Unable to find a destination matching the provided destination specifier:
			{ generic:1, platform:iOS Simulator }

		Available destinations for the "Runner" scheme:
			{ platform:macOS, arch:arm64, variant:Designed for [iPad,iPhone], id:00006000-001420AE0A92401E }
			{ platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device }

To Reproduce
Steps to reproduce the behavior:

Use very good cli to generate a fresh application
use patrol to boot strap test
follow ios setup https://patrol.leancode.co/native/setup
See error. Describe actual behavior. One able to run tests on physical device

Expected behavior
A clear and concise description of what you expected to happen.
Device information

Device: [iPhone 14 Pro Max (116D2FF9-505C-4787-842F-0B5E68743482)]
OS version: [e.g Android 13 AOSP, Android 12 with Samsung One UI]
Does it also both on physical and virtual devices? [didn't check]
Please include as much detail as possible

Additional information

flutter --version
Flutter 3.7.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 7048ed95a5 (8 days ago) • 2023-02-01 09:07:31 -0800
Engine • revision 800594f1f4
Tools • Dart 2.19.1 • DevTools 2.20.1

patrol: ^0.10.11

patrol --version
patrol_cli v0.9.3

Additional context
Add any other context about the problem here.
I am using the IOS target version 13.0. Xcode Version 14.2 (14C18), running on a Mac with the M1 chip.

I had to pass in the scheme however now i have another issue.
The app builds but fails to run.
 xcodebuild test-without-building -xctestrun ../build/ios_integ/Build/Products/Runner_iphonesimulator16.2-arm64-x86_64.xctestrun -destination platform=iOS Simulator,name=iPhone 14

its because this path is incorrect. It should be
xcodebuild test-without-building -xctestrun build/ios_integ/Build/Products/development_iphonesimulator16.2-arm64-x86_64.xctestrun -destination platform="iOS Simulator",name="iPhone 14"

The app builds but fails to run.

Could you please attach logs obtained with --verbose?

its because this path is incorrect

the path is correct - patrol_cli internally changes cwd to ios, so ../build resolves correctly.

running verbose you dont get too much info
• Running app with entrypoint app_test.dart on simulator iPhone 14...
$ xcodebuild -showsdks -json
Assuming SDK version 16.2 for iphonesimulator
$ xcodebuild test-without-building -xctestrun ../build/ios_integ/Build/Products/Runner_iphonesimulator16.2-arm64-x86_64.xctestrun -destination platform=iOS Simulator,name=iPhone 14
	Command line invocation:
	    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild test-without-building -xctestrun ../build/ios_integ/Build/Products/Runner_iphonesimulator16.2-arm64-x86_64.xctestrun -destination "platform=iOS Simulator,name=iPhone 14"

	User defaults from command line:
	    IDEPackageSupportUseBuiltinSCM = YES

With no errors in the test log except me canceling after several min of being idol.

Disable it:
https://user-images.githubusercontent.com/40357511/218093764-bbd78d3d-0c13-4fec-a7b0-f7beac80215e.mov

ok now at least i have an error
$ xcodebuild test-without-building -xctestrun ../build/ios_integ/Build/Products/Runner_iphonesimulator16.2-arm64-x86_64.xctestrun -destination platform=iOS Simulator,name=iPhone 14
	Command line invocation:
	    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild test-without-building -xctestrun ../build/ios_integ/Build/Products/Runner_iphonesimulator16.2-arm64-x86_64.xctestrun -destination "platform=iOS Simulator,name=iPhone 14"

	User defaults from command line:
	    IDEPackageSupportUseBuiltinSCM = YES

	2023-02-10 07:40:55.504541-0500 RunnerUITests-Runner[71057:8594595] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)")
	2023-02-10 07:40:55.507109-0500 RunnerUITests-Runner[71057:8594595] Running tests...
	2023-02-10 07:40:56.001339-0500 RunnerUITests-Runner[71057:8594595] PatrolServer: INFO: PATROL_PORT is null, falling back to default (8081)
	2023-02-10 07:40:56.001506-0500 RunnerUITests-Runner[71057:8594595] PatrolServer: INFO: PatrolServer constructor called
	2023-02-10 07:40:56.001593-0500 RunnerUITests-Runner[71057:8594595] PatrolServer: INFO: PATROL_ENABLED flag is defined
	    t =      nans Checking existence of `"Allow" Button`
	2023-02-10 07:40:56.008027-0500 RunnerUITests-Runner[71057:8594639] [si_destination_compare] send failed: Invalid argument
	2023-02-10 07:40:56.008091-0500 RunnerUITests-Runner[71057:8594639] [si_destination_compare] send failed: Undefined error: 0
	2023-02-10 07:40:56.009432-0500 RunnerUITests-Runner[71057:8594634] PatrolServer: INFO: Server started on http://localhost:8081
	    t =      nans Open com.jparrack.joyful-noise.dev
	    t =      nans     Activate com.jparrack.joyful-noise.dev
	    t =      nans         Wait for com.jparrack.joyful-noise.dev to idle

its idols right after the pop-up shows

Can you show me your Dart test file? It looks like the integration test binding is not initialized.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:patrol/patrol.dart';

void main() {
  patrolTest(
    'counter state is the same after going to home and switching apps',
    ($) async {
      // Replace later with your app's main widget
      await $.pumpWidgetAndSettle(
        MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: const Text('app')),
            backgroundColor: Colors.blue,
          ),
        ),
      );

      expect($('app'), findsOneWidget);
      await $.native.pressHome();
    },
  );
}

just copy pasted from the docs .

nativeAutomation: true

its doesnt compile when i add that.
integration_test/app_test.dart:6:13: Error: Too few positional arguments: 2 required, 1 given.
	  patrolTest(
	            ^
	../../../.pub-cache/hosted/pub.dev/patrol-0.10.12/lib/src/common.dart:32:6: Context: Found this candidate, but the arguments don't match.
	void patrolTest(
	     ^^^^^^^^^^

I have the config in my pubspec.yaml file
void main() {
  patrolTest(
    'counter state is the same after going to home and switching apps',
       nativeAutomation: true,
       nativeAutomatorConfig: NativeAutomatorConfig(),
    ($) async {
      // Replace later with your app's main widget
      await $.pumpWidgetAndSettle(
        MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: const Text('app')),
            backgroundColor: Colors.blue,
          ),
        ),
      );

      expect($('app'), findsOneWidget);
      await $.native.pressHome();
    },
  );
}

With or without nativeAutomatorConfig: NativeAutomatorConfig(), is fails only when i remove both does the file compile.

This is very strange.
Try this:
void main() {
  patrolTest(
    'counter state is the same after going to home and switching apps',
    ($) async {
      // Replace later with your app's main widget
      await $.pumpWidgetAndSettle(
        MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: const Text('app')),
            backgroundColor: Colors.blue,
          ),
        ),
      );

      expect($('app'), findsOneWidget);
      await $.native.pressHome();
    },
    nativeAutomation: true,
  );
}

I'd say your VS Code is not using Dart 2.19, despite what your flutter --version says.

what you sent before worked. putting nativeAutomation: true after the callback.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:patrol/patrol.dart';

void main() {
  patrolTest(
    'counter state is the same after going to home and switching apps',
    ($) async {
      // Replace later with your app's main widget
      await $.pumpWidgetAndSettle(
        MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: const Text('app')),
            backgroundColor: Colors.blue,
          ),
        ),
      );

      expect($('app'), findsOneWidget);
      await $.native.pressHome();
    },
    nativeAutomation: true,
  );
}

This means you're using Dart older than 2.19.
For future reference:

Post dart --version and flutter --version
How did you install Flutter?

➜  guitar_tabs git:(master) ✗ dart --version
Dart SDK version: 2.19.2 (stable) (Tue Feb 7 18:37:17 2023 +0000) on "macos_arm64"
➜  guitar_tabs git:(master) ✗ flutter --version
Flutter 3.7.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision<PHONE_NUMBER> (2 days ago) • 2023-02-08 15:46:04 -0800
Engine • revision 248290d6d5
Tools • Dart 2.19.2 • DevTools 2.20.1

Pretty sure i installed via git

What do you see in this dialog in VS Code?
https://user-images.githubusercontent.com/40357511/218112541-a6c57f87-7ec0-4bb0-bba5-b972e0449025.mov

Well, that is good to know. For some reason i was using 3.3 in vscode. Thanks for all your help setting this up.

No problem.
Don't hesitate to open new issues/discussion in case of more difficulties.


updated a few games to working status

StarDrive 2 works fine, Void Expanse works (requires mono), BossConstructor works, Gratuitous Space Battles 2 works, Fallen: A2P Protocol works

Looks like i finally stoped f-ing it up :D

@liamdawe I know the above comments look like they’re a needless blockade on submissions, but they’re not. We have a tool in the repo for linting commits (to prevent those early required edits), tool usage is mentioned in the README. We have notes to prevent addition information from getting in, as then we have to maintain that in the future, and find people to verify it if and when it changes.
If you’re happy with me using your submission, I can submit adjusted changes later when I get time.

Go ahead and use it, i will check out the tool and see.


7.22 update

Hello! Is the app going to be updated to work with the latest Rune/Mastery rework?

Hey! Yep ^^ i started developing tonight (I was waiting for the champion.gg code update)


Fix new typos found by codespell

Fix only typos in doc/man* for inclusion in 3.* branches.
Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

This pull request is ready to merge

Merged, thanks for the fixes.

It should have been merged with master too, but perhaps the 3.* branches are merged with master periodically any way.


Support slash commands

Using /pug style slash commands seems to be the way the Discord bot API is developing, with possible deprecations in the horizon, so for long-term support this should be considered.

Blocked by #97


Lazy Pruning

Background
Currently, the pruning process in IAVL is synchronous and blocks the Commit flow, leading to performance bottlenecks, especially when pruning legacy orphaned nodes in v1.
Proposal
Implement lazy pruning in IAVL v1 to make the process asynchronous and improve performance. Lazy pruning will separate the pruning operation from the main SaveVersion flow, allowing it to run independently and not block the Commit flow.
Plan

Run the internal pruning loop process.
Store the version in the Prune function to let the internal pruning process know about the up-to-date version. It allows to not break the current interface.
Setup the channel between SaveVersion and the internal pruning process to allow blocking the pruning process in SaveVersion.

Nice! To be clear for those reading, by "lazy" we mean deferred execution.

Would really appreciate us doing this!

completed


Explain/justify PublicIP field in service

It was added in #2319, but it's unclear what it's used for, who uses it, who sets it, etc.

I will doc this as part of the fixit.


Adding extra metadata to module/components

Issue:
What I did
Added the ability to provide custom metadata to the story. This works, for example, when you need to include a service, a custom pipe or directive.
How to test
yarn bootstrap
cd examples/angular-cli
yarn storybook

@igor-dv after this one gets merged feel free to submit a PR to rename some stuff, these names were chosen on the go and now that we have a more feature complete product I think there's a lot of room for improvement in naming :)
@ndelangen @igor-dv how do we want to procede with documentation?

I will try to help you, above all in docs.
I will use my personal profile @norato

There is an outdated demo gif

And it's used in all the apps... 😫

@igor-dv I can improve this gif

@norato it will be very helpful

Perfect, guys. Is any of these things happening in this PR? 🤔  @norato @igor-dv

Nope. Just merge 👍


Add support for Typescript Jest tests

This adds support for Jest tests that are written in Typescript along with an example of how that would look.
The primary change is in packages/jest-runner/worker.ts where we swapped out our own call to import with a call to Jest's transformer functionality which can (via ts-jest) load Typescript files and convert them to Javascript before being put through jazzer.js's instrumentor.
One change that I'm not sure about is packages/jest-runner/jest-extension.ts where I modify Jest's It interface to allow our fuzz.ts files to pass the type checker but this requires importing jest-extension in every test file. If anyone knows a better way to handle this, that'd be great.

The CI tests revealed that this change will break code coverage for Javascript and fixing that will require a much larger change than expected. So we're going to close this for now until we can fix it properly.


Cleanup chart properties

Updates home page and contact email.
Removes out-of-date images from README.md.

/approve


Clarify how the bash shell will be invoked if not specified explicitlly

Why:
This change is related to the https://github.com/actions/runner/issues/1955#issuecomment-1189337732 in the runner repo.
Closes #19191
What's being changed (if available, include any code snippets, screenshots, or gifs):
Added one sentence stating that, if not specified explicitly, bash will be invoked with bash -e {0}
Check off the following:

[x] I have reviewed my changes in staging (look for the "Automatically generated comment" and click the links in the "Preview" column to view your latest changes).
[x] For content changes, I have completed the self-review checklist.

Writer impact (This section is for GitHub staff members only):

[ ] This pull request impacts the contribution experience

[ ] I have added the 'writer impact' label
[ ] I have added a description and/or a video demo of the changes below (e.g. a "before and after video")

Thank you so much @mattpollard for the review and @eric-wieser for suggestions! I applied the latest suggestion, and it seems clear to me. Since the flags are changing the way the action behaves (--pipefail for example is fail-fast behaviour), I would leave it as is. Not sure how to be more explicit there but if you want to change anything, I am happy to apply your changes, or you can commit it right away :relaxed:

Stop ✋
في الأربعاء، ١٠ أغسطس ٢٠٢٢ ١٢:٥١ م github-actions[bot] <
@.***> كتب:

Thanks very much for contributing! Your pull request has been merged 🎉
You should see your changes appear on the site in approximately 24 hours.
If you're looking for your next contribution, check out our help wanted
issues
https://github.com/github/docs/issues?q=is%3Aopen+is%3Aissue+label%3A"help+wanted"
⚡
—
Reply to this email directly, view it on GitHub
https://github.com/github/docs/pull/19192#issuecomment-1210361898, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ATGFBMFTWD35YMBMEUZPP6DVYNUP7ANCNFSM54GW2RDQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Alternative approach to external spriting

Please read https://github.com/moxystudio/react-with-moxy/issues/6
Would you be interested in implementing this strategy behind an option flag or is it outside of the scope of this module? Also, feedback welcome!

Thank you for sharing!
What do you mean with the second point? "References with url(#id) do not work, which is a common practice for gradients."
I like your idea, but I need some time to look into it. The flow would be a bit different so I am not sure if it should be part of this module.

@bensampaio Basically if you try to use this SVG in the sprite, the gradients won't work:
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     viewBox="0 0 108 99" enable-background="new 0 0 108 99" xml:space="preserve">
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="36.4287" y1="33.9314" x2="15.1201" y2="53.1181" gradientTransform="matrix(1 0 0 -1 0 100)">
    <stop  offset="2.000000e-03" style="stop-color:#DD1A40 "/>
    <stop  offset="0.965" style="stop-color:#FD5557 "/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M7,55.9c0.5-0.5,1.2-0.8,2-0.8h34.5c0.8,0,1.5,0.3,2,0.8c0.3,0.3-19.3,19.3-19.3,19.3
    S6.7,56.2,7,55.9z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-31.096" y1="654.444" x2="7.4089" y2="654.444" gradientTransform="matrix(6.123234e-17 1 1 -6.123234e-17 -618.194 87.042)">
    <stop  offset="2.000000e-03" style="stop-color:#E73F4F "/>
    <stop  offset="0.785" style="stop-color:#FC5457 "/>
    <stop  offset="0.965" style="stop-color:#FD5557 "/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M45.5,55.9c0.5,0.5,0.8,1.2,0.8,2v34.5c0,0.8-0.3,1.5-0.8,2c-0.3,0.3-19.3-19.3-19.3-19.3
    S45.2,55.7,45.5,55.9z"/>
<path fill="#241B69 " d="M45.5,94.5c-0.5,0.5-1.2,0.8-2,0.8H9c-0.8,0-1.5-0.3-2-0.8c-0.3-0.3,19.3-19.3,19.3-19.3
    S45.7,94.2,45.5,94.5z"/>
<path fill="#2932D2 " d="M7,94.5c-0.5-0.5-0.8-1.2-0.8-2V57.9c0-0.8,0.3-1.5,0.8-2c0.3-0.3,19.3,19.3,19.3,19.3S7.2,94.7,7,94.5z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="85.4835" y1="54.7145" x2="93.8828" y2="94.2333" gradientTransform="matrix(1 0 0 -1 0 100)">
    <stop  offset="2.000000e-03" style="stop-color:#E7244F "/>
    <stop  offset="0.621" style="stop-color:#FD5557 "/>
    <stop  offset="0.852" style="stop-color:#FD5557 "/>
</linearGradient>
<path fill="url(#SVGID_3_)" d="M70.3,39.6c3.8,3.1,8.6,5,13.9,5c12.1,0,22-9.8,22-22c0-6.1-2.5-11.6-6.4-15.5L70.3,39.6z"/>
<path fill="#241B69 " d="M70.3,39.6c-4.9-4-8.1-10.2-8.1-17c0-12.1,9.8-22,22-22C90.3,0.6,95.8,3,99.8,7L70.3,39.6z"/>
<g>
    <path fill="#2932D2 " d="M55.3,36.2l-17.7-31c-0.9-1.6-3.2-1.6-4.1,0l-5.2,9.1L42.9,40h10.3C55.1,40,56.3,37.9,55.3,36.2z"/>

        <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="12.7544" y1="58.8326" x2="17.375" y2="96.4692" gradientTransform="matrix(1 0 0 -1 0 100)">
        <stop  offset="2.000000e-03" style="stop-color:#E7244F "/>
        <stop  offset="0.746" style="stop-color:#FD5557 "/>
    </linearGradient>
    <path fill="url(#SVGID_4_)" d="M23.1,5.2c-0.9-1.6-3.2-1.6-4.1,0l-17.7,31C0.4,37.9,1.5,40,3.4,40h10.3l14.6-25.7
        C28.3,14.3,23.1,5.2,23.1,5.2z"/>
    <path fill="#220D41 " d="M13.7,40H43L28.3,14.3L13.7,40z"/>
</g>
<path fill="#241B69 " d="M70.4,39.7c-4.9-4-8.1-10.2-8.1-17c0-12.1,9.8-22,22-22c6.1,0,11.6,2.5,15.5,6.4L70.4,39.7z"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="1185.3656" y1="-751.712" x2="1232.1625" y2="-751.712" gradientTransform="matrix(-1 0 0 1 1292.864 827.412)">
    <stop  offset="2.000000e-03" style="stop-color:#E7244F "/>
    <stop  offset="0.785" style="stop-color:#FC5457 "/>
    <stop  offset="0.965" style="stop-color:#FD5557 "/>
</linearGradient>
<path fill="url(#SVGID_5_)" d="M84.1,96.2l23-36.8c1.1-1.9-0.2-4.2-2.4-4.2H63.5c-2.2,0-3.5,2.4-2.4,4.2L84.1,96.2z"/>
<path fill="#2932D2 " d="M73.2,78.7l-9,15.8c-0.5,0.8,0.1,1.7,1,1.7h18.9L73.2,78.7z"/>
</svg>

If you instead generate a sprite in  it does work, but you can't do display:none; you must do width:0;height:0;opacity:0 or similar.

Feel free to close if you don't want to do this in this module, no hard feelings :D

@satazor sorry for the delay. I looked into this again and indeed I think it is out of the scope of this module. Let me know if you or someone creates a similar module in the future!


Revert "Use indexblob to determine versionbundle version"

Reverts giantswarm/chart-operator#112
Related to https://github.com/giantswarm/giantswarm/issues/3907

CI green, merging.


Some  changes

Change the default img to "run-latest", the "latest" or "tomcat-latest" doesn't start very well.
Change the ingress default path, for a easy installation by first time.
Change the path of readinessProbe, It seems to not work.

 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.

@seluard Thanks for your PR :+1:
I've a question about replacing tomcat-latest, what kind of error did you have?
Also could you add more details about the readiness? What is the issue there?

@seluard please take a look at chart v1.0.0, new features have been added and bugs fixed.
I believe that this PR could be fixed now.

Hi @aabouzaid  !
I don't remember exacly, but probably was something wrong on my side, like no hit the /camunda/ path or something.
All is working now, I see that you give more time to the readiness, probably some problem with that before.. idk...
Sorry for late reply ! :(
This can be close ! :)


Flush handler conflict while using multiple roles

Hi,
I'm running mutiple of your roles in a playbook :
.../..
  roles:
    - role: robertdebock.roles.locale
      vars:
        locale_timezone: "{{ ntp_timezone }}"
    - role: robertdebock.roles.openssh
    - role: robertdebock.roles.git
    - role: robertdebock.roles.logrotate
    - role: robertdebock.roles.investigate

My host is a rocky linux 9 uptodate.
The first time I run this sequence, the flush handler in openssh is triggering an event causing an issue on the locale :
TASK [robertdebock.roles.openssh : Flush handlers] *********************************************************************************************
task path: /home/florent.thomas/DEV/Projets_Infra/all-ansible-tools/ansible_collections/robertdebock/roles/roles/openssh/tasks/main.yml:55
[WARNING]: flush_handlers task does not support when conditional

RUNNING HANDLER [robertdebock.roles.locale : Localectl set-locale] *****************************************************************************
task path: /home/florent.thomas/DEV/Projets_Infra/all-ansible-tools/ansible_collections/robertdebock/roles/roles/locale/handlers/main.yml:4
fatal: [sso.mind-and-go.net]: FAILED! => {"changed": true, "cmd": ["localectl", "set-locale", "LANG=fr_FR.utf8"], "delta": "0:00:00.037381", "end": "2022-12-22 21:54:25.241665", "msg": "non-zero return code", "rc": 1, "start": "2022-12-22 21:54:25.204284", "stderr": "Failed to issue method call: Locale fr_FR.utf8 not installed, refusing.", "stderr_lines": ["Failed to issue method call: Locale fr_FR.utf8 not installed, refusing."], "stdout": "", "stdout_lines": []}

RUNNING HANDLER [robertdebock.roles.openssh : Restart openssh] *********************************************************************************
task path: /home/florent.thomas/DEV/Projets_Infra/all-ansible-tools/ansible_collections/robertdebock/roles/roles/openssh/handlers/main.yml:4
META: ran handlers

Even if we have an issue there, y=the locale has correctly been set.
Moreover, running a second time the same sequence succeeded.
AFAICS, this part of the code https://github.com/robertdebock/ansible-collection-roles/blob/master/roles/openssh/tasks/main.yml#L56 is triggering this other part : https://github.com/robertdebock/ansible-collection-roles/blob/master/roles/locale/handlers/main.yml#L4
I don't know what to do

hum...
obviously, not everything is correctly set :
[root@localhost ~]# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=fr_FR.utf8
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
LC_MESSAGES="fr_FR.utf8"
LC_PAPER="fr_FR.utf8"
LC_NAME="fr_FR.utf8"
LC_ADDRESS="fr_FR.utf8"
LC_TELEPHONE="fr_FR.utf8"
LC_MEASUREMENT="fr_FR.utf8"
LC_IDENTIFICATION="fr_FR.utf8"
LC_ALL=

looks like something recent https://bugzilla.redhat.com/show_bug.cgi?id=2000878

About the flushing of handlers;
If there is any ansible.builtin.meta: flush_handlers, it will flush all collected handlers. This means you can indeed see handlers of role x while the role that's running is y.
I'm not sure if that answers your question, let me know if you need something else.


where can i use this

on what websites can i use this

on what websites can i use this

I know you can use it on Stake, but I know there are plenty of other online casinos that use the same platform.

on what websites can i use this

I know you can use it on Stake, but I know there are plenty of other online casinos that use the same platform.

and how would i use this?
how can i use it that i can win on these websites?

on what websites can i use this

I know you can use it on Stake, but I know there are plenty of other online casinos that use the same platform.

and how would i use this? how can i use it that i can win on these websites?

Develop algo and utilize library to interact with the blackjack game.


Filter atlas evidence data based on target.activity

The gene expression evidence we get can have one of three different values for target activities: decreased_transcript_level, increased_transcript_level or unknown. The unknown activity is assigned to evidence from comparisons that are not disease vs normal (more information here) and, therefore, should not be used as evidence. Activity-based filtering of evidence was not performed until the 19.06 release because some old interesting comparisons were annotated with the unknown activity and they required re-curation.
The obejective of this ticket is to decide what is the best way to filter the evidence. For 19.06 and 19.09 the submitted file contained evidence with the three activity categories and the file were filtered by the data team. This is error prone, because someone needs to remember to do it so it would be better to automatise it. We could consider two alternatives to do so:

Ask Atlas to exclude the evidence with unknown activity from the submitted file.

or

Include the filtering to the processing done by platform-input-support.

Each option has its own advantages and limitations, so which solution do you think is better @cmalangone, @MichaelaEBI, @d0choa?

Filtering still not implemeted by atlas for the 20.04 iteration so filtered in-house.

Filtering still not implemeted by atlas for the 20.06 iteration so filtered in-house.

Filtering still not implemeted by atlas for the 20.09 iteration so filtered in-house.

Re-assigned to 20.11 to track outcome of this ticket in that release process

There is no updated gene expression evidence file for 20.11, so moving this 21.02

This has been already implemented in the Expression Atlas new pipeline, along with the specific filter we apply on a number of biotypes in expression data (see #369 for reference).
Closing the issue.


blake2 missing from openssl speed output

SSIA

As @tomato42 indicated, this can be done by using -evp option. Closing the issue...

While it's possible to get this information using -evp as @tomato42 pointed out, it does not change the fact that the output is not available via openssl speed.
What's the criteria here to include (or not) a given algorithm?

IT's just a matter of resources and priorities; there is no policy to keep anything "out"

ok, in that case can you reopen it? I will try to submit a PR (that was my original intention with this issue).

Sure... but can‘t you as the creator of this issue reopen it?

@mspncp I didn't have the option, no.

Well then, go ahead. Pull requests are always welcome...  :-)

it does not change the fact that the output is not available via openssl speed.

I don't quite understand this. Do you mean the 'raw' algorithm should be supported by openssl speed outside the evp interface?

My understanding is that the -evp option is to be used for new algorithms in speed rather than including them directly.

And we are likely to split speed into two parts - internal testing in a separate program - and performance measurement via the interface for users (i.e. evp). Previous discussions on this have occurred.

And we are likely to split speed into two parts

I would say I agree with this, so if the 'external tool' is still called openssl speed, then no need to add 'raw' algorithm since it's already supported by -evp interface.

Sorry, I was not aware that there has been a discussion previously and a clear policy against adding non-evp benchmarks. I did not have the intention to oppose against the consensus and restart unnecessary discussions.
I reopened the issue as an act of politeness to fulfil a request of @blake2 who expressed the desire for further discussion. (GitHub does not give the original reporter the opportunity to reopen an issue. This is rather ridiculous, because it forces people to open duplicates, see e.g. this thread).
Of course it does not make sense to encourage people to submit futile pull requests which won't be accepted anyway. So it was premature to do it, but I didn't know it better and I didn't mean to offend anybody, in particular not Paul. Maybe I also interpreted Rich's comment in the wrong direction. Sorry for the intervention.

Ups, I meant to write @fgsch , not @blake2!

@mspncp , no worries, it's not offending at all ;-)
Actually if the split happens to apps/speed.c, I think we still need the implementation of raw blake2. So I guess a PR containing the raw blake2 implementation in a new 'internal' tool, would be very appreciated in this context - which could be a good start of splitting the original apps/speed...
Any thought? @fgsch

@InfoHunter I'm happy to do the work but I'm not entirely sure what the desired outcome is.
If anyone minds clarifying it I'll take it and open the PR.

I guess that to act on what's going to happen to speed, we have to understand what is the next target for the library. Is the next one going to be a major release that can break backwards compatibility (in this case on usage of the speed app) or for the time being master should not include breaking changes of any sort?

From my understandings, the next release is going to be a major one so we can break backwards compatibility. But still needs confirmation from @openssl/omc
If so, it might be feasible to create a new internal only benchmark tool first, which contains the raw callings to the algorithms (Note: some algorithms can only be called by including some internal header files, so this is the reason why this raw tool can only be internal). This tool is more like a testing utility like other test case from my opinion. When you are doing this, you can reference the current speed code as a 'counter example' - which means not to just copy the raw part of speed - the new internal tool should be more careful when organizing the code...
Then the second step of this would be to remove all raw related code in apps/speed and make it pure evp based. But there is still more work to do with the evp part since not all algorithms can be used with apps/speed via evp - for instance EdDSA ;-). So refactoring of apps/speed is necessary (to support all algorithms via evp...)
Makes sense, @fgsch ? @romen Hope this matches what we have discussed earlier.

Well yes, @InfoHunter , starting to create the internal testing speed (test_speed?) is definitely within the scope of any decision the OMC takes on the next release, as it does not break anything per se.
I don't know, though, if we want the new test_speed to have an architecture/style similar to current speed (which is quite messy, obscure and spaghetti-code) or to write it from scratch with a more consistent and maintainable code base.
Some things worth discussing in case of a start from scratch:

do we want to keep the current "number of operations completed in a fixed time window" metric, or do we want to switch to a "elapsed time for a fixed amount of operations" metric? (the latter, in my experience, provides better support for comparisons between profiling data)
how to unify access to internal functions for cryptosystems in the same "class" of operations to make sure that such measurements are compatible?
should we have an abstract concept of operation supporting a way to categorize/group similar ops, providing an unified interface with hooks to setup (do all the sanity checks to make sure cmdline options for a given operation make sense), init (once all options have been parsed and general stuff setup, actually proceed to initialize the operation, allocate required memory, precompute inputs, etc.), run (minimal footprint overhead encapsulating only what is going to be actually benchmarked), post_run (if there is anything that needs to be freed/cleared after each run), cleanup (clean anything that was allocated in the init step)? (this would help maximizing reuse of similar code for different but related operations across cryptosystems and also making sure that the critical code in the run hook is actually comparable across related operations)
other desirables that I am sure I am forgetting right now!

@InfoHunter Thanks, that makes sense. I will start working on it as soon as I have some time.

I haven't had time in the last 2+ years and I'm not sure when I'd have time to work on this so closing for now.


ci: give minikube 8GB RAM on CentOS bare-metal systems

All bare-metal systems in the CentOS CI have 16GB or more RAM. To
improve performance of the minikube VM, give is 8GB RAM.
See-also: https://wiki.centos.org/QaWiki/PubHardware

Can we also use RAM like we are currently with CPU? (Automatically detecting and assigning)

We can then give half the RAM to the minikube depending on which instance gets assigned(As the majority of instances have 32GB ram)


Semileptonic electron trigger efficiencies and SF

With this PR, the single electron trigger SF computation is implemented. A dedicated processor semileptonicTriggerProcessor derived from the base processor is created for the purpose, that on top of the basic tasks is saving the 2D histograms to evaluate the trigger efficiencies and SF as a function of ($p_T$, $\eta$).
In order to be sure that a restricted set of weights is applied to events for this measurement, the method compute_weights() is overwritten in the trigger processor. Additionally, dedicated preselections on objects, trigger requirements and event selection are developed to select events.
To produce the 2D efficiency and SF maps, a dedicated script scripts/plot/trigger_efficiency.py is created, that saves directly in the output directory the relevant histograms.
In a future PR, also 1D histograms will be produced to show the efficiency as a function of $p_T, \eta, \phi$.
The PR also solves a bug in the normalization of MC. While before the MC yields were mistakenly divided by the sum of the weights progressively during processing, now the histograms are normalized only once in the post_process(), leading to the correct result for the MC normalization.

Changes are understood.
Many improvements. This should also fix the problem with categories without events in that chunk.


Add some react projects into web apps folder Hacktoberfest

Added a simple color changer web app in react by creating a web app folder. Do check my PR #770 .


Auto generate documentation from interface and test output

Allows generation of the documentation from the typescript interface and the test results. This will eventually be done on CI and pushed to gh-pages, but as this PR is already very large I thought I would leave it for a separate PR, unless anyone wants me to add it onto this. Most of the changes come from the large changes in the docs folder, not form the actual code :)

@BenLambertNcl is there anywhere I can see the rendered output.

@ColinEberhardt I have updated the description to include a screenshot of the window API

@jleft I will change the typescript definition in a new PR, as this is currently blocking other work from happening.


Fix "Remove" image button in edit obs carousel

The click event.target (the thing you clicked) is likely to be the text span inside the button. But clicking currently only works if you click the button element (outside the text), because it's the event.target.dataset that gets the image_id, and those data attributes only exist on the button.
Stimulus however allows pulling the dataset directly from the button, because we made it a declared Stimulus target element within the carousel slide: removeImgTarget.
Updates form-images_controller.js

coverage: 93.471%. remained the same
when pulling a4650e5179934dc84654b327298b43656dda1336 on form-images-fix-remove-image-button
into ad31c4e5a2c290a4b3d9fc592303a7abaec961a3 on main.