What is the recommend Android device that cost me less time and trouble to make bpftrace work?

I am able to use bpftrace + kprobe/uprobe on stock Android emulator I set up via Android Studio (x86_64, API level 30). Unfortunately tracepoints don't quite work yet.


[object Object] logged in debug logs

now -d
<snip>
> [debug] [2018-04-09T15:42:45.549Z] POST https://api.zeit.co/v4/now/deployments [object Object]
> [debug] [2018-04-09T15:42:49.248Z] POST https://api.zeit.co/v4/now/deployments [object Object]: 3698.874ms
<snip>

We're now logging the entire response object!


如何在已有的grafana中添加deepflow的数据源

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

DeepFlow Component
Grafana Plugin
What you expected to happen
我已经有grafana了，不想用自带的grafana，如何添加deeplflow数据源？
How to reproduce
No response
DeepFlow version
No response
DeepFlow agent list
No response
Kubernetes CNI
No response
Operation-System/Kernel version
No response
Anything else
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

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

That's a good question, and I'll supplement that part of the documentation today

PR: https://github.com/deepflowys/docs/pull/170
The download link might not work yet, so you can download the plugin from the link below
curl -O https://deepflow-ce.oss-cn-beijing.aliyuncs.com/bin/agent/latest/linux/amd64/deepflow-gui-grafana.tar.gz

Documentation is online:
https://deepflow.yunshan.net/docs/zh/install/production-deployment/#接入已有的-grafana


metric_relabel_configs in cortex-helm-chart

I see that metric_relabel_configs is now supported in https://github.com/cortexproject/cortex/pull/3329.
Looking through the documentation is not readily apparent that the same support has been added to the cortex-helm-chart or am I overlooking something?

@WilliamCassanova thats correct. There are actually quite a few options missing from the included ServiceMonitors

Thank You! I will give it a try.


Support --ingress-class option in Kubernetes Ingress Controller

Do you want to request a feature or report a bug?
Feature
What did you expect to see?

Add a command line for the Kubernetes Ingress Controller to support --ingress-class.  The use case here would be multiple ingresses. Currently, the nginx ingress controller supports it.
Some background here: https://stackoverflow.com/questions/52557930/traefik-on-kubernetes-does-not-keep-path-over-redirect

Hello @raravena80
Many thanks for your interest in the project.
The feature seems to exist in the version 1.7 (#3516).
I close the issue because I guess the question is answered, but feel free to reopenit if necessary or join our Slack workspace for more community #support.


Assets are not loaded in Chrom(e|ium) with HTTPS Everywhere installed

Repro: navigate to codetriage.com
Expected:  (Firefox)
Instead:

Console dump:
https://issuetriage.herokuapp.com.global.prod.fastly.net/assets/application-d0e099e021c95eb0de3615fd1d8c4d83.css Failed to load resource: net::ERR_INSECURE_RESPONSE
https://issuetriage.herokuapp.com.global.prod.fastly.net/assets/application-97e9bbdbd3f560742d2c32c89adef23e.js Failed to load resource: net::ERR_INSECURE_RESPONSE

And it is indeed: https://issuetriage.herokuapp.com.global.prod.fastly.net/assets/application-d0e099e021c95eb0de3615fd1d8c4d83.css presents following page:

Environment: Chromium v39.0.2171.27 (Developer Build)

Sorry to bring this back from the dead but I am getting the same error. Do you remember what the fix was?

@connor11528 I believe it was disabling the Fast.ly rule, but it's ineffective now (there's dedicated Codetriage rule instead). Is your HTTPS Everywhere installation up-to-date?

I had https everywhere forced in my app and that was actually the breaking change. My app is on http so the browser didn't like the https requests for some reason. It was a small headache but once turned off the https my site is hosted on heroku and live with google domains - http://www.employbl.com/

All assets and the website should be served via HTTPS. Is there something I need to do to fix?

No you're all good my bad


listSplits table operation with a max num splits may have a bug.

In the following code there is a while loop, however in the while loop the variable i does not change.   If the while loop will execute more than once then it will add the same split multiple times which seems like a bug.
https://github.com/apache/accumulo/blob/45a4a93d2926760d6a916ae2da1d7e668ec4dcb1/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java#L706-L710
Not completely sure if the while loop could execute more than once, needs further investigation.  If the outer variable r could be greater than 1, then it seems like the while loop could execute more than once.
If the while loop could never execute more than once then maybe it could be changed to an if stmt.

I was talking with @ctubbsii a bit about some of the issues the many different use cases that can be encountered with splitting data evenly and the work I was doing for #2368. Instead of us trying to write our own algorithms, maybe we can use a library. He suggested taking a look at the Apache Datasketches project, for help with mathematical algorthims such as this. One type in particular that might be useful is the quantiles in ItemsSketch: https://datasketches.apache.org/api/java/snapshot/apidocs/org/apache/datasketches/quantiles/ItemsSketch.html#getQuantiles-int-

I was looking at the code today. The value of 'r' will always be <= 1 so the while-loop should never execute more than one time per for-loop iteration. Switching the while-loop to an if-statement would not affect results while perhaps clearing up the code a small amount. Either way, the code accomplishes its intended purpose at the moment.
As for this particular ticket, three options can be considered:

leaving correctly running code as is
updating the while-loop to an if-statement to remove a small amount of confusion
look into other methods of evenly parsing data as referenced above.

Thoughts on this ticket in particular?

updating the while-loop to an if-statement to remove a small amount of confusion

The code is confusing so I think this could at least be done to clear up any confusion and confirm there isn't an issue.


list posts, publications, talks separately under author's profile

and count and display the number of publications
Purpose
In current version, below the author's profile, there is a Latest section that lists the author's posts, talks and publications. However all these items are mixed together. And since only the titles are displayed, it is difficult for the viewers to distinguish the different types of activities/work .
Documentation
This is how the new profile would look like:

I can not find the issue that is mentioned by @gcushen - this would be a great enhancement.

hello, in Research Group theme, how to achieve the same effect now? I see Latest when the author do not exist, othewise author profile when exist. The two parts seems don't work together.

also, I meet similar issue with hugo creates different content when disableFastRender is false. In my case:

if an author (Professor) has many publications, the author page renders Latest, other authors (Student) render author Profile, which is fine
hugo server --disableFastRender can fix in most of the time, otherwise I [WRITE] some file to fresh the render

To deploy, I use the following workaround:
hugo server --liveReloadPort 443 -b https://domain.com --appendPort=false --renderToDisk --disableFastRender

Hope somone can fix the problem. thx

I solve the problem. In /content/authors/, for author Andrew Ng, I named the folder as Andrew_Ng, which shoule be Andrew-Ng. It is suggested to add one more example, like:

admin
吴恩达
Andrew-Ng


ci: add initial benchmark infrastructure

Closes https://github.com/FuelLabs/fuels-ts/issues/3043
Closes TS-604

Summary

This PR seeks to introduce some initial benchmarks that will be on master post-merge.  It adds some metrics around base functions of the SDK and is by no means a finished product. The overall intention is to eventually run these benchmarks against nodes in devnet and testnet to get more realistic assessments around consumer's experiences.
Checklist

[x] All changes are covered by tests (or not applicable)
[x] All changes are documented (or not applicable)
[x] I reviewed the entire PR myself (preferably, on GH UI)
[x] I described all Breaking Changes (or there's none)

@maschad I've noticed that we are not benchmarking a deploy contract transaction. I am aware that we forgot to add it to https://github.com/FuelLabs/fuels-ts/issues/3043 but I believe this is a valid case to benchmark.
Do you think it is worth to add this case now? Or maybe in a future PR?


"Notifications" section is missing in host.json reference docs

Hi, this reference document https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-bindings#host-json seems omit the "notifications" section, as described in https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-versions -

Host.json schema
Durable Functions 2.x uses a new host.json schema. The main changes from 1.x include:
"storageProvider" (and the "azureStorage" subsection) for storage-specific configuration.
"tracing" for tracing and logging configuration.
**"notifications" (and the "eventGrid" subsection) for event grid notification configuration.**

See the Durable Functions host.json reference documentation for details.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4b2c8f85-9416-d9f2-e082-b1b15961d810
Version Independent ID: e987c477-36ef-76b9-6dbd-db76fd291e7b
Content: Bindings for Durable Functions - Azure
Content Source: articles/azure-functions/durable/durable-functions-bindings.md
Service: azure-functions
GitHub Login: @ggailey777
Microsoft Alias: azfuncdf

@akourbat Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

I think I opened this issue by mistake, apparently I was looking at functions docs, whereas this one is for durable functions.  I does include notification segment.  This should probably be closed.


Update Azure Quantum Jobs readme, tests and samples to use Quantum Computing sample

Description
This PR updates the Azure.Quantum.Jobs Readme, Sample and Tests to use a Quantum Computing job instead of the recently deprecated Quantum Inspired Optimization (QIO) job.
The SDK itself has not changed and a new release is not needed.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

@g2vinay, @alzimmermsft: Can you help review and merge this PR?

API change check
API changes are not detected in this pull request.


Reporting indexes (maybe post-MVP)

This came up here, but I wanted to split it out to track it explicitly.
I think that reporting the indexes of arguments within args would be a helpful addition, because it lets you build a bunch of more complicated logic on top of parseArgs without needing to do a full re-parse.
For example, this would make it straightforward to:

resolve conflicts between --foo and --no-foo as last-wins
throw on duplicate flags (check if the flag occurs at multiple indexes)
if someday defaults are added, check to see if an option was provided by a user or came from the default (https://github.com/pkgjs/parseargs/issues/70#issuecomment-1071056359)
enforce that value-taking arguments are all specified using --foo=bar rather than --foo bar (check each to see if args[index].includes('='))
enforce that two flags are specified in a specific order (--enable-experimental-options before --some-unstable-option, e.g.)

enforce that value-taking arguments are all specified using --foo=bar rather than --foo bar (check each to see if args[index].includes('='))

i am very interested in enforcing this!

Playing with this idea (and https://github.com/pkgjs/parseargs/issues/70#issuecomment-1073368566):
  parseDetails: {
    options: {
      foo: { argIndex: 1, argIndices: [1] },
    },
    positionals: [
       { argIndex: 3 }
    ]
    }

I was thinking about how to implement and use this, and a couple of complications:

the returned index is into an array of args that might have been determined by parseArgs internally. The "parseDetails" could include a property for (say) "originalArgs".
short option groups mean multiple options could have the same index (which affects two ordering use cases of index: enforcing order of options, and last overlapping option wins)

might have been determined by parseArgs internally

It's either the author-provided thing or process.mainArgs, right? As long as it's no more complicated than that, it seems like the script author is unlikely to have trouble figuring out the appropriate array to index. Though I also don't see a problem with returning originalArgs.

short option groups mean multiple options could have the same index (which affects two ordering use cases of index: enforcing order of options and last overlapping option wins)

Hm, yeah, the author would need to write slightly more complicated logic to handle these cases. It's especially annoying with the awful -xyzSTRING style, because then you have to figure out where the "flags" part stops and the "string value" part starts, and can't just use lastIndexOf.
If we want to make this case easy, in the case of short options there could be an additional shortOptionsGroupIndex property or something, which is an index within that string. So { index: 3, shortOptionsGroupIndex: 2 } would correspond to something like the f in --a --b --c -xf.
(I'm not sure if the shortOptionsGroupIndex should count from the - or the character after it, hm. Probably from the -? For the main use cases, of comparing locations, it doesn't end up mattering.)

🔨 Moving towards MVP Milestone 1 (#87)
I propose post-MVP.

Rather than returning a structure indexed by parsed options, I am thinking about returning an array for each thing the parser discovers. e.g. option, option-terminator, positional. The option elements might have information like whether the option was specified with a short or long name, whether the option values was embedded or in a separate argument, whether the option was auto-discovered or a known option.
@bcoe and @bakkot have previously mentioned AST (Abstract Syntax Tree) as concept. I don't have experience with AST so coming at it from first principles and CLI experience.
@darcyclarke is trying something similar in minargs: https://github.com/darcyclarke/minargs/commit/f7f4bd4310d216615528a128563d918997866e07

I think it'll be hard to evaluate the difference between that (index -> option) and the originally proposed inverse of that (option -> indices) without writing them out in a little more detail and seeing what different use cases look like with each style.

What got me thinking in the array direction was disliking needing two indices to tell the order of short options from a short option group. I am imagining a short option group would generate multiple (flat) elements in the array, and not a tree.
I can imagine the current parseArgs results being generated from the AST-ish array with a simple loop calling storeOption on each option, adding each positional to positionals. Eating our own dog food.
But only in my head. Not written any details. :-)

Playing with a prototype. I'm not trying to make decisions, so feel free to ignore until after the upstream PR lands!
% node index.js -ab --foo=bar -- --pos
{
  originalArgs: [ '-ab', '--foo=bar', '--', '--pos' ],
  ast: [
    {
      symbol: 'option',
      optionName: 'a',
      short: 'a',
      argIndex: 0,
      value: undefined,
      valueIndex: undefined
    },
    {
      symbol: 'option',
      optionName: 'b',
      short: 'b',
      argIndex: 0,
      value: undefined,
      valueIndex: undefined
    },
    {
      symbol: 'option',
      optionName: 'foo',
      short: null,
      argIndex: 1,
      value: 'bar',
      valueIndex: 1
    },
    { symbol: 'option-terminator', argIndex: 2 },
    { symbol: 'positional', value: '--pos', argIndex: 3 }
  ]
}

Some thoughts on that prototype:

When aliases are defined, I think that the optionName should be the long option. That is, if you have foo: { alias: 'f' }, then -f should be represented as { optionName: 'foo' }. This is so a script author can do ast.findLastIndex(x => x.symbol === 'option' && x.optionName === 'foo'), without having to worry about handling aliases explicitly.
Why make short be the character itself instead of a boolean? You can look up the character from the config, if you need to.
For distinguishing --foo=bar from --foo bar (assuming a type: 'string' option), it may make more sense to have a boolean along the lines of inlineValue, rather than having a valueIndex which is always either the current index or the next index.
From your example it's not clear if --foo bar (assuming a type: 'string' option) would end up as two elements, or just one where valueIndex is different from argIndex. I'd hope just a single element.
The convention is to name the field which identifies the type of thing as type, not symbol.
Maybe name the field elements or parseElements? "AST" is kind of technical term, not something most users would know.

And here's what the use cases in the OP would look like, given those tweaks:

resolve conflicts between --foo and --no-foo as last-wins

let { values, positionals, elements } = parseArgs(config);
let getLastIndex = name => elements.findLastIndex(x => x.type === 'option' && x.optionName === name);
if (values.foo && values['no-foo']) {
  values.foo = getLastIndex('foo') > getLastIndex('no-foo');
}

throw on duplicate flags

let { values, elements } = parseArgs(config);
let dupes = Object.keys(value)
  .map(name => elements.filter(e => e.type === 'option' && e.optionName === name))
  .filter(e => e.length > 1);
if (dupes.length > 0) {
  throw new Error(`duplicate flag${dupes.length > 1 ? 's' : ''} ${dupes.join(', ')}`);
}

enforce that value-taking arguments are all specified using --foo=bar rather than --foo bar

let { values, elements } = parseArgs(config);
for (let element of elements) {
  if (element.type === 'option' && !element.short && element.valueIndex != null && element.valueIndex > element.argIndex) {
    throw new Error(`argument ${element.optionName} must specify its argument as \`--foo=bar\`, not \`--foo bar\``);
  }
}

enforce that two flags are specified in a specific order

let { values, elements } = parseArgs(config);
let getFirstIndex = name => elements.findIndex(x => x.type === 'option' && x.optionName === name);
let getLastIndex = name => elements.findLastIndex(x => x.type === 'option' && x.optionName === name);
if (values.first && value.second && getFirstIndex('first') > getLastIndex('second')) {
  throw new Error(`"first" must be specified before "second"`);
}

These are all ok, I guess?
I notice a lot of type === 'option' filtering, but maybe that's unavoidable. (Actually it's not necessary in these examples, because optionName is only present on type: 'option' elements, but it feels kind of gross not to have that guard.)
Also I'm a bit worried that people are going to conflate "index in this array" with "index in the original array", which works for positional --foo --bar but fails when there's short options or options with values. Again, maybe that's unavoidable, though.

When aliases are defined, I think that the optionName should be the long option.

Yes. It is the thing to use for lookups into the supplied config and returned values.

Why make short be the character itself instead of a boolean?

I was thinking about supplying enough information to display an error message without looking up option in config. But a bit subtle to use, can look it up as you say, and I think a boolean might be clearer.

For distinguishing --foo=bar from --foo bar (assuming a type: 'string' option), it may make more sense to have a boolean along the lines of inlineValue, rather than having a valueIndex which is always either the current index or the next index.

I actually started with that but tried the index, and it wasn't compelling. I agree, inlineValue would be better.

From your example it's not clear if --foo bar (assuming a type: 'string' option) would end up as two elements, or just one where valueIndex is different from argIndex. I'd hope just a single element.

Yes, single.

The convention is to name the field which identifies the type of thing as type, not symbol.

I avoided "type" in first instance because we use that in input configuration. Would "elementType" be ok? (Per next suggestion.)

Maybe name the field elements or parseElements? "AST" is kind of technical term, not something most users would know.

Yes. (I was over-reaching with AST! 😊 )

I was thinking about supplying enough information to display an error message without looking up option in config

Yeah, I don't think "you don't have to look at the config" should be a goal. It's necessarily on hand, so it's not going to be hard to get to.

I avoided "type" in first instance because we use that in input configuration. Would "elementType" be ok? (Per next suggestion.)

Ehhhhh that's gonna be painful to write out every time. kind is the name I generally use if type doesn't work. This annoys the type theorists, but that's ok.

@shadowspawn Now that valueIndex has become inlineValue, I think it would make sense to replace argIndex with just index. Otherwise, that's looking pretty good, I think.

I'm still a little worried about the potential for people assuming that elements and args are 1-to-1, which is not true in the above design. So here's a possible alternative which occurred to me, where we maintain a closer relationship between the two lists. It seems like it would be a bit harder to use than the design above, so this is mostly presented for the sake of exploring the design space.
Assuming config is
{
  'ex': { type: 'boolean', short: 'x' },
  'why': { type: 'boolean', short: 'x' },
  'see': { type: 'string', short: 'C' },
  'foo': { type: 'string' },
}

then running node index.js -xy -C4 - xC5 -xC 6 --ex --foo=bar --foo bar -- pos would give
elements: [
  { kind: 'short', options: ['ex', 'why'], value: undefined, inlineValue: undefined },
  { kind: 'short', options: ['see'], value: '4', inlineValue: true },
  // in short option groups, `value` if defined is for the last element of `options`:
  { kind: 'short', options: ['ex', 'see'], value: '5', inlineValue: true },
  { kind: 'short', options: ['ex', 'see'], value: '6', inlineValue: false },
  // the value for non-inline values is present both under the `value` key in the option's element and as its own element
  { kind: 'value', value: '6' },
  { kind: 'long', options: ['ex'], value: undefined, inlineValue: undefined },
  { kind: 'long', options: ['foo'], value: 'bar', inlineValue: true },
  { kind: 'long', options: ['foo'], value: 'bar', inlineValue: false },
  { kind: 'value', value: 'bar' },
  { kind: 'option-terminator' },
  { kind: 'positional', value: '--pos' },
]

Note that this preserves elements.length === args.length.
And just for example, here's what "resolve conflicts between --foo and --no-foo as last-wins" looks like with this design:
let { values, positionals, elements } = parseArgs(config);
let optElements = elements.flatMap(e => e.options ?? []);
if (values.foo && values['no-foo']) {
  values.foo = optElements.lastIndexOf('foo') > optElements.lastIndexOf('no-foo');
}

... ok actually that's not as bad as I thought it was going to be. flatMap is great but I guess this a lot trickier if you're not comfortable with flatMap.

Now that valueIndex has become inlineValue, I think it would make sense to replace argIndex with just index.

I still prefer argIndex for a bit more context about what it is? I know you like short names, but none of your earlier examples actually needed it (after switch to inlineValue) so not heavily used.

I'm still a little worried about the potential for people assuming that elements and args are 1-to-1, which is not true in the above design.

Hmm, I'm not expecting this to be a problem. I'm hopeful either confusion won't occur, or it won't come up in use as working with just elements and not referencing back to args.

So here's a possible alternative which occurred to me, where we maintain a closer relationship between the two lists. It seems like it would be a bit harder to use than the design above, so this is mostly presented for the sake of exploring the design space.

I agree the 1:1 is a bit harder to use. (Thanks for working an example.)

A minor musing on name of returned originalArgs. I prefer to avoid overlap of property names on input configuration and output result, but args might be an exception since actually same thing. If you supply args with configuration, then you don't need the returned args, so less potential for name clash of variables?
const { values, positionals, elements } = parseArgs({ args, strict });
// or
const { values, positionals, elements, args } = parseArgs({ strict });
// in either case, args is what got parsed

I still prefer argIndex for a bit more context about what it is?

I don't think the extra context is useful, personally. There's only one thing it could  really be. And odds are you're going to find out about it by reading existing code or documentation in any case, which should make it very clear.
Still, I don't feel super strongly. It just feels redundant to me.

Hmm, I'm not expecting this to be a problem.

Mostly I mention it because I made exactly that mistake when writing up this snippet despite having already known they were different. It's just very easy to think "i want the index" and reach for .findIndex() or .indexOf() rather than .find().argIndex.

I prefer to avoid overlap of property names on input configuration and output result, but args might be an exception since actually same thing.

Yeah, if we're going to return args at all then it is fine to name it args. (Though I really really do not think is necessary - most functions do not return their input and nothing particular about this function which should make us deviate from that. The only reason to do so is that the default value for args isn't readily available, but that should be fixed by adding process.mainArgs, not by returning the input.)

(1:1) Mostly I mention it because I made exactly that mistake

Oh, your experience trumps my speculation! Something to be aware of with naming and documentation.

(args) Though I really really do not think is necessary ... but that should be fixed by adding process.mainArgs

All fair points. I am not aware of any activity on mainArgs. (There was a brief PR, albeit less sophisticated that one our placeholder: https://github.com/nodejs/node/pull/29990/files)

@shadowspawn Having thought about it some more, I think the usability benefits of having at most one option per element probably outweighs the benefits of having the indices line up, so probably we should stick with your original design. People will definitely make the same mistake I did, but I don't see a way to avoid that without taking too large of a hit to usability.
Do you want to make a PR? I can put one together at some point if not.

I would like to make a PR. I can open a draft now if anyone would like code to run against for experimenting. Functional, but some distance from final form (Refactor, primordials, et al.)


Non-Idiomatic Bytes-to-String Conversion

Context: Code inefficiencies related to unnecessary conversions.
Location: keys.go
Issue: Non-idiomatic and inefficient string conversion. Resulting string data is converted back to bytes, causing unneeded copying.
Remediation: Return bytes directly.

no longer needed as we're switching to BlobstreamX


Attempt to capture user id in Sentry using hash of wallet pubkey

Main objective here is to ensure we track users correctly, and tying an analytics id to segment


isEmail validation fails for strings which contain common unicode symbols

The scenario I checked was this.

Use flag isEmail:true for field
Use email addresses with the following strings<EMAIL_ADDRESS>or<EMAIL_ADDRESS>Validation fails

I checked as reference on gmail create an account and both the above mentioned strings, they are marked as invalid as I expected (e.g. message : Please use only letters (a-z), numbers, and periods.).
Should the approach be that we should write a custom validation to handle this scenario? Or is this the expected behavior on express-validator?

I unfortunately don't have the time to check this at the moment, but you should check the behavior of our underlying dependencies for validation, validator.

@gustavohenke yep confirmed the dependency  validator has the similar issue.


regression: Play fails to compile in 2.11.x-jdk8 build

as seen at https://scala-ci.typesafe.com/job/scala-2.11.x-jdk8-integrate-community-build/318/consoleFul
@gmethvin perhaps https://github.com/playframework/playframework/commit/8cffd51aeb8a35e59406c1dcb99e136cb5689fce ...?

well it looks like the failing line of code is:
Configuration.configError(if (underlying.hasPath(path)) underlying.getValue(path).origin else underlying.root.origin, message, e)

But the code on master looks correct: https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/Configuration.scala#L984

Okay I see what happened. Looks like we backported and missed one of the uses of that method.

green at https://scala-ci.typesafe.com/job/scala-2.11.x-jdk8-integrate-community-build/319/, so I guess this is fixed?

Yes it's fixed now.


Chore: Logger.warn is depreacted, use warning instead

Codecov Report

Merging #324 (edf8c20) into main (3426085) will increase coverage by 0.10%.
The diff coverage is 23.68%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #324      +/-   ##
==========================================
+ Coverage   35.87%   35.98%   +0.10%
==========================================
  Files          60       60
  Lines        5315     5321       +6
==========================================
+ Hits         1907     1915       +8
+ Misses       3408     3406       -2

Impacted Files
Coverage Δ

siibra/configuration/configuration.py
43.37% <0.00%> (ø)

siibra/configuration/factory.py
22.47% <0.00%> (ø)

siibra/core/parcellation.py
53.70% <0.00%> (ø)

...bra/features/connectivity/regional_connectivity.py
20.90% <0.00%> (ø)

siibra/retrieval/requests.py
44.40% <0.00%> (ø)

siibra/volumes/neuroglancer.py
21.42% <0.00%> (ø)

siibra/volumes/nifti.py
18.91% <0.00%> (ø)

siibra/volumes/parcellationmap.py
37.13% <25.00%> (ø)

siibra/core/region.py
42.00% <57.14%> (+2.24%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[✨] Added better error handling at boot

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


Pin dependencies

Pin dependencies to avoid CI / installation failures

Coverage increased (+0.06%) to 95.839% when pulling 5efcfc0e462be4150cc8b614ffc9a81f25192c9a on hotfix/pin-deps into 285ed56c95d5a18576c55145ac996d0ba411b643 on release/0.9.x.


power charging

Is there a specific reason why other than in PyBaMM there are only constant current operations are supported? in another word is there any way I can dis/charge power from/to battery?
and is liionpack a suitable library for simulating the behavior of a bigger battery like a power bank?

No specific reason other than it hasn't been developed yet. liionpack is still pre-release. If you are interested in adding that functionality we can help and that would be great

@cyasing

So I think we'd need to control power at the pack level and then work out the total pack voltage then divide power by this to get current and apply the single step currents as normal

Have to allow power control in protocols
https://github.com/pybamm-team/liionpack/blob/develop/liionpack/protocols.py

It's used in the solver here https://github.com/pybamm-team/liionpack/blob/b1a1ddbc6f607f24b3f916b8cc68f4a17980cf2e/liionpack/solvers.py#L319

And here
https://github.com/pybamm-team/liionpack/blob/b1a1ddbc6f607f24b3f916b8cc68f4a17980cf2e/liionpack/solvers.py#L319

And here
https://github.com/pybamm-team/liionpack/blob/b1a1ddbc6f607f24b3f916b8cc68f4a17980cf2e/liionpack/solvers.py#L425

Terminal voltage can be used to divide power to set terminal current. This is set here
https://github.com/pybamm-team/liionpack/blob/b1a1ddbc6f607f24b3f916b8cc68f4a17980cf2e/liionpack/solvers.py#L431
I guess using the value from previous time step should work

@cyasing

Thank you.

Terminal voltage can be used to divide power to set terminal current. This is set here
https://github.com/pybamm-team/liionpack/blob/b1a1ddbc6f607f24b3f916b8cc68f4a17980cf2e/liionpack/solvers.py#L431
I guess using the value from previous time step should work

It looks like the terminal voltage is set after solving solve_circuit_vectorized(netlist) in the function _step(), which in itself requires current value I_map to solve: https://github.com/pybamm-team/liionpack/blob/b1a1ddbc6f607f24b3f916b8cc68f4a17980cf2e/liionpack/solvers.py#L425
Power needs to be converted to current before that, doesn't it?

Yep you could loop in the initialisation step to get the right current

@cyasing I could work with you on this issue. Can I find you for example in the pybamm Slack channel so we could chat?

@cyasing I could work with you on this issue. Can I find you for example in the pybamm Slack channel so we could chat?

@OlliRuokojoki I don't have a slack account yet. I'll ask for an invitation.

Use this invite https://join.slack.com/t/pybamm/shared_invite/zt-1obrjh8fr-FKm~sT8693cZnAcim5dh~A

Use this invite https://join.slack.com/t/pybamm/shared_invite/zt-1obrjh8fr-FKm~sT8693cZnAcim5dh~A

Thanks!

Did you get something working for this? I ask because the script you use on the other issue uses power

Did you get something working for this? I ask because the script you use on the other issue uses power

I have added some code to convert power to current in the way you described, but getting that to test requires me to figure out the problem with the shifting solver, or at least the reason behind the capacity warning coming up in it. It's in a loop.

Is everything you are working on in a branch somewhere I can take a look at?

I had forked the repository, actually. It is here: https://github.com/cyasing/liionpack-power-trial.git . Do tell me if forking like this is not something I should do.

Hi,
Is anyone still working on this? I'd really need this feature.

FYI - there is a PyBaMM change to experiments coming in to the next release imminently so might make sense to wait for that https://github.com/pybamm-team/PyBaMM/pull/2960

Hi @TomTranter,
I have now simplified my large battery pack to just a single large battery cell as basic PyBaMM works much better. I may just keep working on my simulation with the single cell to make the process a lot easier.
By the way does Liionpack support drive cycles? If I used drive cycles and current data I could get the results I'm looking for. At some lower and upper voltages I could stop the drive cycle, write new current data based on the new terminal voltage and then continue the drive cycle at the point it was interrupted by my voltage check. Do you think this approach is feasible with Liionpack?
Thanks for the help!

It does support drive cycles but stopping and re-starting simulations with old solution is not totally straight forward. Our plan is to merge liionpack into PyBaMM so the solvers and experiments will all work exactly the same in future. It's just quite a big job and other things have taken priority right now. If you can get the single PyBaMM model working for your needs I would stick with that


Autofill Hints iOS: email field doesn't autofill if keyboardType is TextInputType.emailAddress

Steps to Reproduce

Run on iOS device
Focus the email text field
No email suggestions will be displayed
Comment out line 56
Repeat 1 & 2
Email suggestions will be displayed

Bonus issue after step 6

Focus new password field
Focus email field
Suggestions will not be displayed

MCVE
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(SpikeApp());
}

class SpikeApp extends StatelessWidget {
  const SpikeApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: _HomeScreen(),
    );
  }
}

class _HomeScreen extends StatefulWidget {
  const _HomeScreen({Key? key}) : super(key: key);

  @override
  __HomeScreenState createState() => __HomeScreenState();
}

class __HomeScreenState extends State<_HomeScreen> {
  final emailController = TextEditingController();
  final passwordController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    final spacer = SizedBox(height: 25);

    return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(25),
          child: AutofillGroup(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                Text('Create account'),
                spacer,
                TextField(
                  controller: emailController,
                  autofillHints: [
                    AutofillHints.email,
                  ],

                  /// Setting the keyboardType to TextInputType.emailAddress
                  /// breaks the iCloud Keychain email suggestion.
                  ///
                  /// Leaving it blank causes it to work as expected
                  keyboardType: TextInputType.emailAddress,

                  textInputAction: TextInputAction.next,
                  decoration: InputDecoration(
                    hintText: 'Your email',
                  ),
                ),
                spacer,
                TextField(
                  controller: passwordController,
                  autofillHints: [
                    AutofillHints.newPassword,
                  ],
                  // obscureText: true,
                  decoration: InputDecoration(
                    hintText: 'Your password',
                  ),
                ),
                spacer,
                ElevatedButton(
                  child: Text('Save account info'),
                  onPressed: () {
                    TextInput.finishAutofillContext();
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.1, on macOS 11.4 20F71 darwin-x64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] VS Code (version 1.57.0)
[✓] Connected device (3 available)

• No issues found!

Hi @lukepighetti
Thanks for filing the issue
I'm unable to reproduce this issue, email is suggested every time even if keyboardType: TextInputType.emailAddress

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.2, on macOS 12.0 21A5248p darwin-x64, locale en-GB)
    • Flutter version 2.2.2 at /Users/tahatesser/Code/flutter_stable
    • Framework revision d79295af24 (3 days ago), 2021-06-11 08:56:01 -0700
    • Engine revision 91c9fc8fe0
    • Dart version 2.13.3

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/SDK
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode-beta.app/Contents/Developer
    • Xcode 13.0, Build version 13A5154h
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.57.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.23.0

[✓] Connected device (3 available)
    • Taha’s iPhone (mobile) • e534bcc711c9a011aa892eb51cdb60f40b3acddb • ios            • iOS 12.5.3
    • macOS (desktop)        • macos                                    • darwin-x64     • macOS 12.0
      21A5248p darwin-x64
    • Chrome (web)           • chrome                                   • web-javascript • Google
      Chrome 91.0.4472.77

• No issues found!

Can you please provide your iOS version? (mine is 12.5)
Thank you

Try this one:
Alternative Steps to Reproduce

Run on iOS device
Focus the email text field
Email suggestions will be displayed
Focus the password text field
Focus the email text field
Email suggestions will not be displayed

Any updates on this issue?

in my case, IOS 15.5. and Autofill didn't work at all. I have checked the username and password.
is there any news or solutions?

AutofillGroup do the trick

Nope, adding an AutofillGroup as a parent does not fix the issue in my case on IOS 16.0.2. It does work as expected on Android 13. Too bad for iOS users...
`flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.3.8, on macOS 13.0 22A380 darwin-arm (Rosetta), locale en-FR)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.3)
[✓] VS Code (version 1.73.1)
[✓] Connected device (3 available)
[✓] HTTP Host Availability
• No issues found!`

any update for this issue?

Hi! Has anyone found any workarounds for iOS?

I just received a negative review on the App Store because password autofills do not work in iOS. Can we please get someone to prioritize this issue?

From my side I see suggestions but when i click on then the system dialog is showing but when i confirm suggesstion the dialog is closing but no fields are filled. Basically nothing happens.


LeakCanary pointing to leak on PresenterManager

I'm currently developing an app using Mosby 3.0.4 and LeakCanary once in a while tells me there's a 2 or 3 MB leak here.
There aren't steps to reproduce it since it happens randomly (mostly upon closing the app), but it's not a constant and can't seem to find a reason why it might be leaking there.
Any ideas why this might be happening?

This should be fixed with upcoming 3.1.0 version.
Please try 3.1.0-SNAPSHOT and let me know if that fixes this issue.
On So., 17. Sep. 2017, 01:34 Matias Radzinski<EMAIL_ADDRESS>wrote:

I'm currently developing an app using Mosby 3.0.4 and LeakCanary once in a
while tells me there's a 2 or 3 MB leak here
https://github.com/sockeqwe/mosby/blob/e9462d1011b2acb3e3d6b6605fc17cc5496778c6/presentermanager/src/main/java/com/hannesdorfmann/mosby3/PresenterManager.java#L40
.
There aren't steps to reproduce it since it happens randomly (mostly upon
closing the app), but it's not a constant and can't seem to find a reason
why it might be leaking there.
Any ideas why this might be happening?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/sockeqwe/mosby/issues/275, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAjnrsfjwmMgAeFxGcWix9k2icQVxbh0ks5sjFrygaJpZM4PZ-4b
.

I'm also using mosby-conductor. Will upgrading to 3.1.0 have any side effects? Just wondering if I'll need to update that one too.

It's not breaking anything (like crashing),
but with Mosby Conductor the new internal changes introduced in 3.1.0 are
not applied yet as it requires some Mosby conductor internal changes too. I
can provide you a snapshot for Mosby conductor 3.1.0 on Monday.
On So., 17. Sep. 2017, 03:13 Matias Radzinski<EMAIL_ADDRESS>wrote:

I'm also using mosby-conductor. Will upgrading to 3.1.0 have any side
effects? Just wondering if I'll need to update that one too.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/sockeqwe/mosby/issues/275#issuecomment-330005451, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAjnrhlUZhSAQ6yZaDiun---y_qtXWKKks5sjHI3gaJpZM4PZ-4b
.

That would be absolutely fantastic. Just drop me a line here whenever you get some time to update mosby-conductor and I'll give both a try. Thanks mate!

Hm, I had an error in reasoning. PresenterManager shouldn't be used at all with conductor.
Do you use multiple Activities and MviActivity or the like?

I do have more than one activity, but only one of them uses Mosby (the other one is just a Splash with no presenter, so nothing to do with this). No MVI activity.

When is 3.1.0 version released ? My app's leaked on PresenterManager

I hope this week.
Mosby Conductor mist likely next week.

@sockeqwe the real problem is your Delegate classes Implementation can't recognized the view(for example fragment) is totally destroyed or it's  destroyed just for orientation change.
if they store anything like context in static field they get leak from LeakCanary but what about when you just don't need the presenter class anymore and it remained in PresenterManager? the presenter is not needed anymore.

In 3.1.0 it can distinguish between not being usee anymore and temporarily
detached.
There are two things to note here:

Mosby-Conductor is not using 3.1.0 internally even if you update the
Mosby dependency itself to 3.1.0 because Mosby-Conductors delegate is not
migrated to 3.1.0 yet.
Mosby-Conductor is not using PresenterMangaer at all, hence it is very
strange that you see leak canary reports. I will investigate if there is a
unwanted reference in Mosby-Conductor.
There is a little chance that leak canary is reporting a false positive,
because depending on how you set up leak canary, it might be the case that
leak carany is checking to early and the presenter is not removed yet, but
will be removed later.
Its totally possible that it is indeed a bug, but I wasnt able to
reproduce it yet in isolation.

Siavash A<EMAIL_ADDRESS>schrieb am So., 12. Nov. 2017, 13:39:

@sockeqwe https://github.com/sockeqwe the real problem is your Delegate
classes Implementation can't recognized the view(for example fragment) is
totally destroyed or it's destroyed just for orientation change.
if they store anything like context in static field they get leak from
LeakCanary but what about when you just don't need the presenter class
anymore and it remained in PresenterManager? the presenter is not needed
anymore.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sockeqwe/mosby/issues/275#issuecomment-343734345, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAjnroWw7oDnrwpYUIc3CgBq46JSYQ_aks5s1ubmgaJpZM4PZ-4b
.

when it will be released?
I didn't get any leak report from LeakCanary. I just checking the implementation and find out it can be leaked whether it report by Canary or not. So I decide to write a issue but I see there is already a thread about that.

@siavashabdoli which classes / code do you think can create a leak?


How to change the sipmle rate using a post processor

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've searched known issues and the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
Здравствуйте. Мне нужно скачать аудио дорожку ютуб видео, преобразовать его в формат огг и назначить ему симпле рате в 41100. Я смог сделать все кроме симл рейта, прошу подсказать что делать:
-x --remux-video ogg --audio-quality 1 --no-keep-video --postprocessor-args "ffmpeg:-ar 44100"
Provide verbose output that clearly demonstrates the problem

[ ] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[ ] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
No response

Is this your post? https://old.reddit.com/r/youtubedl/comments/1ei8q40/ytdlp_how_to_change_simple_rate/
As explained there, it is not possible with opus formats. That is why all opus formats from youtube are 48kHz. You could select a non-opus format, but it likely would already be 44.1kHZ


Strange behavior when running a binary file

Description
I'm trying to localize my program.
I am using the gettext module. When compiling the project, I add the locales directory with the flat pack main.py --add-binary locales:locales to use it after, but I encountered strange behavior.
If I run the program using python, it works as expected, the locale is located in a folder in the project, but if we try to run a binary file that creates and extracts its files to a temporary folder at startup, then the gettext module cannot find the locale.
For example:
The project tree looks like this:
D:\DEVELOPER\I10N
│   build.sh
│   flet.log
│   main.py
│
└───locales
    │   base.pot
    │
    └───ru_RU
        └───LC_MESSAGES
                base.mo
                base.po

It works properly in this way: python ./main.py
Logs:
DEBUG:root:Path to file execute d:\Developer\i10n\main.py
DEBUG:root:Path to locales for translate: d:\Developer\i10n\locales
DEBUG:root:Is found locales? d:\Developer\i10n\locales\ru_RU\LC_MESSAGES\base.mo
DEBUG:root:Is dir exists? True

I'm trying to compile an application and do this:
flet pack main.py --add-binary locales:locales
and than...
try to open main.exe
Logs:
DEBUG:root:Path to file execute C:\Temp\_MEI85922\main.py
DEBUG:root:Path to locales for translate: C:\Temp\_MEI85922\locales
DEBUG:root:Is found locales? None
DEBUG:root:Is dir exists? True

I really don't understand why this behavior happens, it only happens on Windows and Mac OS, the binary file is executed correctly only on Linux.

Code example to reproduce the issue:
I'll leave the archive with the project. Don't worry, it's as small as possible, created only to demonstrate behavior.
import os
import gettext
import logging
import flet as ft

logging.basicConfig(filename="D:\\Developer\\i18n\\flet.log", level=logging.DEBUG)
logging.getLogger("flet_core").setLevel(logging.INFO)

async def main(page: ft.Page):
    path_to_locales = os.path.join(os.path.dirname(__file__), "locales")

    logging.debug("\n")
    logging.debug("Path to file execute %s", __file__)
    logging.debug("Path to locales for translate: %s", path_to_locales)
    logging.debug("Is found locales? %s", gettext.find("base", path_to_locales))
    logging.debug("Is dir exists? %s", os.path.isdir(path_to_locales))
    logging.debug("\n")

    translation = gettext.translation("base", path_to_locales, fallback=True)
    _ = translation.gettext

    page.title = _("Translate title of Application")
    page.update()

ft.app(main)

Describe the results you received:
Undetected language files when executing a binary file.

Describe the results you expected:
Localization of the application when using a binary file.

Additional information you deem important (e.g. issue happens only occasionally):
Flet version (pip show flet):
0.22.0

Give your requirements.txt file (don't pip freeze, instead give direct packages):
flet==0.22.0
pyinstaller==6.6.0

Operating system:
Windows, macOS.

Additional environment details:
i10n.zip

So, the issue is that locales is not getting added to an application bundle, i.e. there is no such directory in the unpacked app in C:\Temp\_MEI85922? Is there anything from PyInstaller log indicating this dir is added/not-added? Could it be PyInstaller issue?

The code for flet pack is quite trivial, you can try looking at it to see if there is an issue: https://github.com/flet-dev/flet/blob/main/sdk/python/packages/flet/src/flet/cli/commands/pack.py#L183-L186

i.e. there is no such directory in the unpacked app in C:\Temp\_MEI85922

No, the directory exists and it can be seen from the logs, but the gettext module does not find the locale, I assume that the code is in main.py runs faster than unload all the source files to the tmp folder, although it does not sound logical

I can't comment on the process of unpacking in PyInstaller.
To further investigate the issue to understand whether it comes from Flet, PyInstaller or gettext I would create a simple Python app, without Flet and with gettext, pack it with PyInstaller and debug.

Closing the issue because there was no response from the author.


API Update using Patch

Using the customers API, I can successfully get, create and delete customers. I'm still having issues updating a customer and receive the reply below with BadRequest_InvalidToken.
Content is only to update the phone number
{
	"phoneNumber": "(555) 555-1234"
}

What am I missing?
{
    "error": {
        "code": "BadRequest_InvalidToken",
        "message": "Could not validate the client concurrency token required by the service. Please provide a valid token in the client request."
    }
}

Issue resolved by using the if-match * in the header.


Can't get all infos about devices

Hi! As a first goal, I wanted to get a list of all devices in my surroundings with the basic functions you detail in your documentation. However, I have an issue to get all the datas about my devices even though the function seems to work fine. I get a device object like this:
Device {
id: "2F:AE:4D:B6:C4:3D",
isConnectable: null,
manufacturerData: "BgABCSAA18c+9sBY2xXpcA/XVZEUEtFD1uZIHQ8=↵",
name: null,
overflowServiceUUIDs: null,
rssi: -37,
serviceData: null,
serviceUUIDs: null,
solicitedServiceUUIDs: null,
txPowerLevel: null,
}
I can understand that we need to connect to it to retrieve some datas like services but for example why the name is null? Something is wrong here and I don't get it.
I'm sorry, I'm new to react native and handling bluetooth between peripherals.
I already block on something that simple when my final goal is to see whether or not we can configure the connected devices wifi using bluetooth.

During scanning you can only see limited information about device. There is special packet called Advertisement Data which is used to send above information. It is limited in size (max 29 bytes of user payload) and as I can see all of it is used by manufacturerData in your case.
After connection you can try to read name from characteristic if it's available:
https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.device_name.xml

Hi, thank you for you quick reply.
I see what's the problem, so how can I ignore manufacturerData to get other informations that I need?
Maybe there is a way to loop on this advertisement Data call to get the whole thing?
Thanks.

Well you can't do anything from application side. Peripheral needs to be reconfigured / its firmware modified.

@Cierpliwy  There is any way to get the ManufacturerSpecificData from the device?
Actually, i just can get the ManufacturerData, but not the specific, I review your code and you use the ScanRecord class to get the bytes from the manufacturerData but you never call to the specificManufacturerData method and I believe that is important in a BLE library.


Add cron task to run Unpaywall import

Run the full Unpaywall import in staging first.

Run once a week.

I'll need to do this one.

This change is in the RMD chef repository, and it has been applied to the production server. The Unpaywall import is now scheduled to run every Tuesday beginning at 8 PM. This should be after the weekly OAB import has normally finished running, and since the data from those two sources overlaps quite a bit, this should help to keep RMD's OA metadata a little fresher. I've documented this change here:  https://github.com/psu-stewardship/researcher-metadata/pull/384


Add support for new MNE-BIDS BIDSPath

The somato dataset fails to download on Circle

The somato dataset fails to download on Circle

Opened an issue upstream:
https://github.com/sappelhoff/MNE-somato-data/issues/1

The somato dataset fails to download on Circle

@hoechenberger it should be fixed now. I also wrote a guide so that anyone can fix this problem on their own (click on "details").

These should be the needed steps. I am doing them now and will update this post if it turns out that one of the steps is wrong.
general requirements:

datalad
git annex

Get data as .tar.gz from MNE OSF and turn into datalad dataset

wget -q -O - https://osf.io/tp4sg/download?version=6 | tar xvzf -
mv MNE-somato-data ..
datalad create MNE-somato-data
cd MNE-somato-data
mv ../../MNE-somato-data/* .
datalad save
rm -rf ../../MNE-somato-data

Upload file by file to a new OSF repo

using https://github.com/datalad/datalad-osf

export OSF_TOKEN=<your token created from OSF ui>
datalad create-sibling-osf -s osf MNE-somato-data --mode export
git annex export HEAD --to osf

... this may take a long time depending on your upload speed.
... it may happen that not all files get uploaded (due to connection error). In that case, see: https://github.com/datalad/datalad-osf/issues/109
Parse the new OSF, download urls into a CSV and force update a dataset (the GitHub mirror) ... or make a new GitHub mirror

using https://github.com/templateflow/datalad-osf ... note that you probably have to remove datalad/datalad-osf from your namespace first
here, we update an existing mirror ... but for making a new mirror, see gsoc2019 blog
more info on updating partials of a datasets neurostars issue

make the new OSF repo public
delete the MNE-somato-data/derivatives/freesurfer/subjects/fsaverage symlink on OSF ... else datalad will error later on, because if cannot add symlinks
cd ..
mkdir gh
cd gh
datalad clone https://github.com/sappelhoff/MNE-somato-data
cd MNE-somato-data
python -c "import datalad_osf; datalad_osf.update_recursive(key='nxtqh', csv='./tmp.csv', limit_to_ext=None)" ... replace nxtqh with your OSF key (the suffix of the URL)
rm tmp.csv
datalad save
datalad publish

the somato thing still fails, because the fsaverage symlink was not uploaded ... and OSF refuses to accept it, because it thinks it's a directory ...
no luck with osf-client or datalad-osf either. No clue how I managed to do that back then ...

no luck with osf-client or datalad-osf either. No clue how I managed to do that back then ...

okay, found the issue. I currently don't have freesurfer installled ... so the symlink is broken on my system. and apparently, broken symlinks behave very odd.

Thanks for looking into this, @sappelhoff! Can you ping me when you think it's ready to go? Just tried fetching somato and still hitting the same error :(

Thanks for looking into this, @sappelhoff! Can you ping me when you think it's ready to go? Just tried fetching somato and still hitting the same error :(

yeah, the plot thickens. I now managed to upload a fsaverage symlink to OSF and also managed to push it to the GitHub mirror ...
now the only question is whether that will work. Because I think beforehand, the git-annex data contained the actual contents of fsaverage, instead of a symlink.
These contents are:

label  mri  mri.2mm  scripts  surf  xhemi

apparently I copied them from the symlink's destination /usr/local/freesurfer/subjects/fsaverage to the fsaverage in the MNE-somato dataset.
The odd thing is, that the MNE .tar.gz version contains a symlink.
Well ... I just hope it works now. Can you try again?
Else I'll have to ask someone to share these files from their freesurfer installation folder "label  mri  mri.2mm  scripts  surf  xhemi" and I'll upload them.

nice, so now we don't have a download error any more ... the symlink seems to work somewhat.
We get a new error though:

17:39:25  A critical error occurred.

Traceback (most recent call last):

  File "tests/run_tests.py", line 138, in <module>

    run_tests(test_suite)

  File "tests/run_tests.py", line 106, in run_tests

    pipeline()

  File "tests/run_tests.py", line 48, in source

    mod.main()

  File "/home/circleci/project/10-make_forward.py", line 83, in main

    itertools.product(config.get_subjects(), config.get_sessions()))

  File "/home/circleci/project/10-make_forward.py", line 82, in <genexpr>

    parallel(run_func(subject, session) for subject, session in

  File "/home/circleci/project/config.py", line 1046, in wrapper

    raise(e)

  File "/home/circleci/project/config.py", line 1039, in wrapper

    return func(*args, **kwargs)

  File "/home/circleci/project/10-make_forward.py", line 68, in run_forward

    subjects_dir=config.get_fs_subjects_dir())

  File "<decorator-gen-72>", line 21, in make_bem_model

  File "/home/circleci/miniconda/lib/python3.7/site-packages/mne/bem.py", line 590, in make_bem_model

    surfaces = _surfaces_to_bem(surfaces, ids, conductivity, ico)

  File "/home/circleci/miniconda/lib/python3.7/site-packages/mne/bem.py", line 500, in _surfaces_to_bem

    surfs[si] = read_surface(surf, return_dict=True)[-1]

  File "<decorator-gen-66>", line 21, in read_surface

  File "/home/circleci/miniconda/lib/python3.7/site-packages/mne/surface.py", line 720, in read_surface

    ret = _get_read_geometry()(fname, read_metadata=read_metadata)

  File "/home/circleci/miniconda/lib/python3.7/site-packages/nibabel/freesurfer/io.py", line 183, in read_geometry

    raise ValueError("File does not appear to be a Freesurfer surface")

ValueError: File does not appear to be a Freesurfer surface

nice, so now we don't have a download error any more ... the symlink seems to work somewhat.

I'm getting the following error message:

```
(mne-dev) ➜  tests git:(bidspath) python download_test_data.py -d somato

datalad installing "somato"
[INFO   ] Cloning https://github.com/sappelhoff/MNE-somato-data to '/home/parietal/rhochenb/mne_data/somato'
datalad get data "sub-01" for "somato"
[INFO   ] Actually getting 8 files
datalad get data "derivatives/freesurfer/subjects" for "somato"
[INFO   ] Actually getting 504 files
Total (503 ok, 1 failed out of 504): 100%|████████████████████████████████████| 345M/345M [01:08<00:00, 12.0MB/s][WARNING] Running get resulted in stderr output:   download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download failed: Gone
download faile...
[ERROR  ] from web...
| Unable to access these remotes: web
| Try making some of these repositories available:
|       00000000-0000-0000-0000-000000000001 -- web
|       df1ecd42-2c7f-4e08-ad85-e4255e20fb1b -- stefanappelhoff@arc-lin-004309:~/Desktop/bids/MNE-somato-data
|
| (Note that these git remotes have annex-ignore set: origin) [get(/home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects/fsaverage)]
[WARNING] could not get some content in /home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects ['/home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects/fsaverage'] [get(/home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects)]
Traceback (most recent call last):
File "download_test_data.py", line 104, in
main(dataset)
File "download_test_data.py", line 93, in main
dataset.get(to_get, jobs=n_jobs)
File "/storage/store/work/rhochenb/miniconda3/envs/mne-dev/lib/python3.8/site-packages/datalad/distribution/dataset.py", line 437, in apply_func
return f(**kwargs)
File "/storage/store/work/rhochenb/miniconda3/envs/mne-dev/lib/python3.8/site-packages/datalad/interface/utils.py", line 439, in eval_func
return return_func(generator_func)(*args, **kwargs)
File "/storage/store/work/rhochenb/miniconda3/envs/mne-dev/lib/python3.8/site-packages/datalad/interface/utils.py", line 427, in return_func
results = list(results)
File "/storage/store/work/rhochenb/miniconda3/envs/mne-dev/lib/python3.8/site-packages/datalad/interface/utils.py", line 413, in generator_func
raise IncompleteResultsError(
datalad.support.exceptions.IncompleteResultsError: Command did not complete successfully [{'type': 'file', 'refds': '/home/parietal/rhochenb/mne_data/somato', 'status': 'error', 'path': '/home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects/fsaverage', 'action': 'get', 'annexkey': 'MD5E-s0--d41d8cd98f00b204e9800998ecf8427e', 'message': 'from web...\nUnable to access these remotes: web\nTry making some of these repositories available:\n\t00000000-0000-0000-0000-000000000001 -- web\n \tdf1ecd42-2c7f-4e08-ad85-e4255e20fb1b -- stefanappelhoff@arc-lin-004309:~/Desktop/bids/MNE-somato-data\n\n(Note that these git remotes have annex-ignore set: origin)'}, {'action': 'get', 'path': '/home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects', 'type': 'directory', 'refds': '/home/parietal/rhochenb/mne_data/somato', 'status': 'impossible', 'message': ('could not get some content in %s %s', '/home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects', ['/home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects/fsaverage'])}]
(mne-dev) ➜  tests git:(bidspath)
</details>

it's weird that you get a different error than the CI.
but anyhow, I am now downloading the full fsaverage data, then uploading to OSF, then updating the datalad mirror.
Then everything should be as it was before. :grimacing:

it's weird that you get a different error than the CI.

Yeah idk… I deleted the entire somato directory before retrying. Maybe the CI's cache is playing tricks on us here.

Can you try again @hoechenberger? I re-did the MNE-somato-data repository. It should be exactly as it was before now.

Can you try again @hoechenberger? I re-did the MNE-somato-data repository. It should be exactly as it was before now.

It's working for me locally! Thanks for your help, @sappelhoff! I will restart CI now.

@sappelhoff Sorry, this was a bit premature. I only checked whether the download of the dataset works properly now, which it does (at least doesn't throw an error message). But locally I also get ValueError: File does not appear to be a Freesurfer surface. Will try to see if I can figure out where the problem is coming from. But I would bet it's related to that symlink thingy you mentioned before…

@sappelhoff There is indeed still sth wrong with the link:
$ ls -lH /home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects/01/bem/inner_skull.surf
-r--r--r-- 1 rhochenb parietal 32 Jul  2 22:44 /home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects/01/bem/inner_skull.surf
$ cat /home/parietal/rhochenb/mne_data/somato/derivatives/freesurfer/subjects/01/bem/inner_skull.surf
watershed/01_inner_skull_surface%
$

this is an absolute nightmare, I hope this gets easier with the great work that @mih is doing in https://github.com/datalad/datalad-osf/pull/106

we can also put the dataset on openneuro so we have all dataset on openneuro.
https://github.com/mne-tools/mne-study-template/blob/master/tests/download_test_data.py#L17
somato is the only one on OSF

we can also put the dataset on openneuro so we have all dataset on openneuro.
https://github.com/mne-tools/mne-study-template/blob/master/tests/download_test_data.py#L17
somato is the only one on OSF

+1!!

I am trying one last thing right now (uploading the fsaverage/bem folder as well), if that doesn't work, I am at my wit's end anyhow.
So the only options would be:

upload to OpenNeuro
Wait for datalad/datalad-osf/106

okay, that didn't work either. I give up for now.

openneuro it is then !

Let me know if I can be of any help here!

Let me know if I can be of any help here!

yes, can you upload what you need to OpenNeuro, please? :)
I already broke the dataset, so I feel my job is done /sarcasm
but for real though, fighting with datalad yesterday and today already cost me several hours, so it'd be nice if you could take over :+1:

Ok I will see what I can do, @sappelhoff! Just need to find a source that's not broken ;) Will keep you posted! Thank for putting so much time & effort into this, I really appreciate it.

I've published it on OpenNeuro: https://openneuro.org/datasets/ds002993/
However, it's yet to be synced to GitHub: https://github.com/OpenNeuroDatasets/ds002993
Anyone know how long this usually takes?

However, it's yet to be synced to GitHub: https://github.com/OpenNeuroDatasets/ds002993

Heh, it just finished syncing! Neat!

Yeeeeesssss!! It's working!!!
@agramfort care to merge? :)

nice, and interestingly without fsaverage link whatsoever.
I am going ahead and will delete https://github.com/sappelhoff/MNE-somato-data and the corresponding OSF repo.
Thanks for cleaning up @hoechenberger!

nice, and interestingly without fsaverage link whatsoever.

I intentionally removed it – was that a bad idea?

I intentionally removed it – was that a bad idea?

if it works, it must be fine. The fsaverage is shipped with freesurfer anyways, so it was a mystery to me anyhow why I previously included it in the dataset before :man_shrugging:

The fsaverage is shipped with freesurfer anyways, so it was a mystery to me anyhow why I previously included it in the dataset before

This was my thinking exactly!

Is this somato data also used in MNE? Something to update there?

Is this somato data also used in MNE? Something to update there?

To my knowledge it's the exact same dataset. MNE should probably start fetching it from OpenNeuro too now, yes :)

Is this somato data also used in MNE? Something to update there?

yup, MNE uses the BIDS version of the somato data, as stored on OSF
in fact, I don't think there is a non-bids version anymore (except of course in the OSF version history)

MNE should probably start fetching it from OpenNeuro too now, yes :)

xref: https://github.com/mne-tools/mne-python/issues/6687
:)

Thanks @agramfort!