Add support for .NET Standard 1.0

There are a number of things in your excellent library that would work in .NET Standard 1.0 (ex: AwaitableDisposable).  It would be very useful if those were separated out into an assembly that can be installed in that profile.

I've reviewed the type compatibility, and I believe the only types compatible with 1.0 would be AwaitableDisposable and IdManager.
Since these types both have limited usage outside this library and are both very small, I have concluded that splitting up this library is not the best choice.
If you disagree, please do present your reasons why 1.0 support would be helpful.

AwaitableDisposable and the various interfaces are they ones I was thinking about.  I happen to maintain a number of different frameworks and try hard to have them Target .NET Standard 1.0 -- your AwaitableDisposable and IAsyncWaitQueue have really come in handy in a number of apps I have written and having those available to a larger "surface area" of components would be great.
Another option might be to setup Interfaces for all of you core classes and then expose them in a .NET Standard 1.0 package -- this would be my actual preference :) as then I could leverage thinks like the Manual Reset Event or the LazyLock from anywhere

How interesting that you use IAsyncWaitQueue - I was not aware of anyone else using that. :) I assume you're already aware that the interface has changed with these new netcore libraries.
I could add some interfaces which would be netstandard1.0, but I won't write those implementations - they're just too hard to get right at that level of BCL. The only implementation of IAsyncWaitQueue I'm willing to support requires netstandard1.3.


Add files via upload

Fixed logo for WPXIDT1.us

Also added WMORDT1.us and edited WMORDT2.us and WMORDT3.us


ReferenceError: regeneratorRuntime is not defined

Updated nuxt from 10.7 to latest alpha and got this error.
I've installed all required babel presets also with polyfills and nothing...
My devDependencies:
"devDependencies": {
    "babel-eslint": "^7.1.1",
    "babel-loader": "^7.0.0",
    "babel-polyfill": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "eslint": "^3.15.0",
    "eslint-config-standard": "^6.2.1",
    "eslint-loader": "^1.6.1",
    "eslint-plugin-html": "^2.0.0",
    "eslint-plugin-promise": "^3.4.1",
    "eslint-plugin-standard": "^2.0.1",
    "less": "^2.7.2",
    "less-loader": "^4.0.3",
    "sass-loader": "^6.0.5"
}

I've fixed this:
so, add to package.json - devDependencies:
"babel-plugin-transform-runtime": "^6.23.0",
and nuxt.config.js
babel: {
  presets: [
    'es2015',
    'stage-0',
  ],
  plugins: [
    'transform-runtime'
  ]
},

I'm getting this in red:
[Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.

configuration.module has an unknown property 'strictThisContextOnImports'. These properties are valid:
object { exprContextCritical?, exprContextRecursive?, exprContextRegExp?, exprContextRequest?, loaders?, noParse?, rules?, unknownContextCritical?, unknownContextRecursive?, unknownContextRegExp?, unknownContextRequest?, unsafeCache?, wrappedContextCritical?, wrappedContextRecursive?, wrappedContextRegExp?, strictExportPresence? }
Options affecting the normal modules (NormalModuleFactory).
configuration.output has an unknown property 'jsonpScriptType'. These properties are valid:
object { auxiliaryComment?, chunkFilename?, crossOriginLoading?, chunkLoadTimeout?, devtoolFallbackModuleFilenameTemplate?, devtoolLineToLine?, devtoolModuleFilenameTemplate?, filename?, hashDigest?, hashDigestLength?, hashFunction?, hashSalt?, hotUpdateChunkFilename?, hotUpdateFunction?, hotUpdateMainFilename?, jsonpFunction?, library?, libraryTarget?, path?, pathinfo?, publicPath?, sourceMapFilename?, sourcePrefix?, strictModuleExceptionHandling?, umdNamedDefine? }
Options affecting the output of the compilation. output options tell webpack how to write the compiled files to disk.
configuration.resolve has an unknown property 'cacheWithContext'. These properties are valid:
object { alias?, aliasFields?, cachePredicate?, descriptionFiles?, enforceExtension?, enforceModuleExtension?, extensions?, fileSystem?, mainFields?, mainFiles?, moduleExtensions?, modules?, plugins?, resolver?, symlinks?, unsafeCache?, useSyncFileSystemCalls? }
configuration.resolveLoader has an unknown property 'cacheWithContext'. These properties are valid:
object { alias?, aliasFields?, cachePredicate?, descriptionFiles?, enforceExtension?, enforceModuleExtension?, extensions?, fileSystem?, mainFields?, mainFiles?, moduleExtensions?, modules?, plugins?, resolver?, symlinks?, unsafeCache?, useSyncFileSystemCalls? }](url)


Bring VSCode window to foreground after opening remote file

As a quick fix, this is (kinda hacky) done by launching VSCode via "code" by child_process.
This was inspired by the solution of a similar plugin for SublimeText (see https://github.com/randy3k/RemoteSubl/blob/f131b3b8b7317ac06998f96e1b8095c9841b2e1a/remote_subl.py#L140-L141).

Unfortunately, this didn't work in my tests
Command seems to execute, but VSCode is not put on focus.  I can't say what is missing.
Manually executing the command seems to work as expected.

I have only tested in on Windows with an VSCode Insider build.
So I had to actually use exec('code-insiders') instead of exec('code')
When you open a terminal (cmd in Windows or your favourite shell in Linux) and simply execute "code" (or "code-insiders"), does it open VScode?
If yes, then I think the command should work.
Ideally, one needs to figure out (cross-platform) the path to the executable of VSCode (or at least if it's insider or not to use code or code-insiders) and execute that.
Does e.g. the vscode module have any special methods for that?

In insiders, I noticed recentely this fix opens a new (empty) window.
It can be corrected by including the --reuse-window (-r) flag so that an existing window is brought up.
So exec("code") becomes exec("code -r")


Translate reference/kubectl/jsonpath/ into Japanese

This is a Feature Request

What would you like to be added

Translate reference/kubectl/jsonpath/ into Japanese.
Why is this needed
This page has not been translated.
Comments

/language ja
/assign

/triage accepted


Gamepad's Joystick not working on Android

Godot version:
Version 3.2.3 stable official
OS/device including version:
Samsung Galaxy A70 - Android 10
Issue description:
I was creating my plataform game for Android and I decided to test with a controller to see if the character was good to control. First, I went to the Input Map tab in the Project Settings and assigned each direction of the left stick (up, down, left, right) to their respective actions (ui_up, ui_down, ui_left_, ui_right). Then I played the game in the PC via the editor and worked wonderfully. But, when I exported the game to my Android phone, the moment I touched the Left Stick to move my character to the right, my character started to walk to the left and any other direction didn't. He only stopped when I pressed Left in my directional buttons. After that, I tried to move with the analog stick again, but the game didn't respond to any direction I tried, only the directional buttons.
Later, I tried with the right analog stick and the same thing happened, so I created a little demo to show what happens.
Steps to reproduce:
Assign one of the Analog Sticks of a controller to any action in the Input Map tab.
Export the project to Android.
Try to move the analog stick.
Minimal reproduction project:
Controller Test.zip

Oh, and I forgot, I tested both analog sticks and the buttons and only the Analog Sticks doesn't work right. (The only buttons that I don't know If they work or not is The R2 and L2 buttons. I don't tested them and because they are analog and work in Axis like the Analog Sticks, there is a chance they do not work as well.)

Duplicate of https://github.com/godotengine/godot/issues/38048.
Also, which controller model are you using?

I use the Ípega Bluetooth Controller PG-9021.

Sorry for creating a duplicate, but there is any solution for this problem?

Sorry for creating a duplicate, but there is any solution for this problem?

You may be able to create a fixed controller mapping, compile an Android export template and use this custom template but testing the mapping will be a long and tedious process if the controller can only be used on Android.

Ok, Thank you so much ❤


Unifying a way of indexing our tables that are related to Provider entities

We need to start using unified way of indexing as a first step towards DB unique indexes. Each of our table should have:

1.1) manager_ref -> an identifier inside of the provider, does not have to be unique since this can be a complex key, like stack resource will have [:manager_ref, :stack_id], where manager ref of the resource is unique only under a stack. So main usecase for this one is for provider actions, like update a resource. If the manager_ref is missing, that is because we created a fake model on our side.
1.2) manager_ref_uuid/manager_uuid -> this would be a unique key under a manager, that we will build in the refresh to be unique. So e.g. "#{stack_manager_ref}__#{resource_manager_ref}"
1.3) manager_id -> a foreign key for the Manager

But that should be probably only for first class citizen tables, so not hardware, Disk, etc.?

Then unique key in the DB would be [:manager_id, :manager_ref_uuid]. And e.g. Disk unique key would be [:hardware_id, :device_name] ?

Then for disconnected elements we would have  [nil, :manager_ref_uuid]? There could be some issues then, when disconnecting.

Manager vs EMS
In the beginning there was ExtManagementSystems - short EMS.
And most objects have and ems_id - which is the rails internal id for the ems that the object is linked to via belongs_to :ems
And we saw it was good.
But then came the managers. Now every manager inherits from ExtManagementSystem. And technically they live in the same db table. But we are shifting the wording from EMS to Manager, hence we want to move from ems_id to manager_id
Refs
Then there was ems_ref - which is used to identify an object with its external provider id. Which can be anything - it's used by the manager to identify the object e.g. during refresh or operations. But as there are managers now, we want to shift towards manager_ref

Cant we just assume and require that a manager_ref should always be uniq in the scope of a manager_id?  Wouldnt that take away the pain of having 1.2 manager_ref_uuid?

@durandom right, let me try to explain what I mean with manager_ref vs manager_uuid
In the ansible example a unique key in the db [:configuration_script_source_id, :name]
but since we do STI, some other provider could come (happens in cloud) and say: "But my unique key is [:configuration_script_source_id, :name, :version]"
doing this change in the db would affect all the other providers
so what if we said unique key is [:manager_uuid] or [:configuration_script_source_id, :manager_uuid]. Then the purpose of manager_uuid would be to be unique under the given scope and you can build it from any columns to achieve that.
But then, you would still have unchanged key of the provider in :manager_ref. So when obtaining playbook you don't need to do configuration_script_source_ref, playbook_name = playbook.manager_ref.split("__")
but you can just use playbook.configuration_script_source.manager_ref and playbook.manager_ref or even playbook.name and playbook.version
I've experienced that any changes to manager_ref, leads to a pain when talking back to provider. :-) Also, we have cases where we do fake objects, because we need one structure of models, if we show them in 'generic' lists, etc. Then would be nice to have :manager_ref blank, as an easy way of saying "it's fake, so you can't do any action on it" -> "This object is being managed by XY, you cannot modify it separately"

That being said.

@durandom @agrare @Fryguy
So talking to Adam, we might need to scope the unique index to provider, so e.g. [provider_id, ems_ref] to set an allowed are of disconnect/reconnect. Where the reconnect logic would be done using ON CONFLICT UPDATE, using our unique constraint. So we could never duplicate it under a provider. Thoughts? Not sure how to tackle the fact that some managers can actually have duplicate data then though.
But nevertheless the [ems_id, ems_ref] is probably not usable, because we disconnect things.
So I am thinking we should have:

:ems_ref (or :name, or combination of keys): to be able to identify the object in the Provider API. It will be blank if it's our fake object
:ems_id(:manager_id in new tables): current manager owning it, nil if disconnected
:provider_id: a provider of the related managers, never nil
:manager_uuid (provider_uuid): the unique identifier under the provider, we will construct this to be unique for every table that is filled via the refresh

unique index [:provider_id, :provider_uuid]

then ON CONFLICT UPDATE on the unique index should take care of reconnecting, but if the provider_uuid is build badly, the managers under could be stealing their data. So here the place where the graph DB would shine, since it would just create edges/relations to the resource from many managers, instead of stealing it.

sounds reasonable, though I have to admit I dont fully understand it.
I'm a big fan of small step iterations.
So wouldnt it be a good first start to

add ems_ref to every table in our DB and force the collector to provide it?
if the relation to a provider/ems/manager isnt enough to scope ems_ref: prepend ems_id to it during save_inventory

Once we have that in place we can tackle the problems you describe.
But maybe I'm missing something crucial that makes such a stepped approach not possible

:provider_id: a provider of the related managers, never nil

This sounds like a workaround for the fact that we denote disconnected inventory by deleting the :ems_id
The last option you have (soft delete) sounds like the best

:manager_uuid (provider_uuid)

How about :provider_uid since this is explicitly not "universally unique" but unique within the provider?

@Ladas @agrare  Can this be closed or is this still planned?


kompile fun-untyped environment

do not review yet

@radumereuta I get some weird error messages if I do not comment lines 331-332, the subsorting with klabels. Could you please take a look?

@andreistefanescu, it shouldn't affect anything, but you could try removing the quotes from all klabels

Jenkins: test this please

@grosu I have takes the environment based fun to the point where all tests that parse also execute successfully. Please review what I have done so far. I will move on to fixing the matchAssoc exception now. If you have spare cycles and want to modify the definition further/try to see whay the 7 programs do not parse, you can go ahed. I will not touch this definition in the immediate future.

@andreistefanescu , this looks good.    I don't like the outputs, but those will be improved later when we have a better unparser.  I looked a bit into the parsing issue and I could not figure it out quickly.  I am also very tired, as I woke up early in the morning and had little sleep.  Parsing comes with lots of headaches, and you need a fresh mind for that.

@grosu I added the substitution-based fun (the last 2 commits). Please review them as well.
@cos please review https://github.com/kframework/k/commit/9ce900820a485fc9fe2eadbdd7f194c1abfb6a1a

lgtm

looks good!  so the only thing left is that parsing thingy.


Don't try to import runtime_auth when not in runtime

Changes
Runtime auth is attempted when we do not have any config variables set (either directly in the sdk config, in .databrickcfg or as env vars). This further attempts importing runtime_auth functions from the dbruntime package. These are not available outside dbr.
This PR moves "is in dbr runtime" check before the import, so that the import is not attempted outside dbr and users don't get cryptic errors.
Tests

[ ] make test run locally
[ ] make fmt applied
[ ] relevant integration tests applied

Codecov Report
Patch coverage is 100.00% of modified lines.

Files Changed
Coverage

databricks/sdk/core.py
100.00%

:loudspeaker: Thoughts on this report? Let us know!.


Providing a timeout in the MTRDevice downloadLogOfType currently causes issues and fails to abort the transfer

The MTRDevice downloadLogOfType has an issue if there is a timeout provided. The MTRDiagnosticsLogTransferHandler should be fixed to allow for that.

Closing since this looks like a followup for #29976 that has been closed.


Creating GFX Null Device when running Linux (radeon driver)

When running the Torque3D engine (not the dedicated server) under Fedora, which uses the open source radeon drivers (2x HD6850 in crossfire setup), results in the following error:
The requested renderer, D3D9, doesn't seem to be available. Trying the default, OpenGL.
The OpenGL renderer doesn't seem to be available. Trying the GFXNulDevice.
Attempting to create GFX device: GFX Null Device []
Initializing GFXCardProfiler (GFX Null Device Renderer)
  o Chipset : 'NULL Device'
  o Card : 'GFX Null Device Card'
  o Version : '0'
  o VRAM : 0 MB

Scanning card capabilities...
Loading card profiles...
No card profile core/profile/GFXNullDeviceRenderer.cs exists
No card profile core/profile/GFXNullDeviceRenderer.NULLDevice.cs exists
No card profile core/profile/GFXNullDeviceRenderer.NULLDevice.GFXNullDeviceCard.cs exists
No card profile core/profile/GFXNullDeviceRenderer.NULLDevice.GFXNullDeviceCard.0.cs exists
Device created, setting adapter and enumerating modes
% Segmentation fault (core dumped)

I wonder if it would work with mesa drivers?

Do I need to triple-boot and see if I can get Fedora working natively on my R9? :P

yes :D

No worries, I'll save you the hassle of dropping back to the open source radeon driver. Your R9 will probably cry you a river if you'd do that :p so I'll look into it.
I do use mesa drivers in combination with radeon. glxgears and glxinfo show that OpenGL should work fine in this setup I suppose and this problem is confirmed for Ubuntu 14.04 as well.

@pbrand how is mesa driver performance with amd cards on linux? I was curious, as I don't have any amd cards (I'm an nvidia fanboy :l)

I haven't checked the performance of the mesa driver actually, but if you are interested I'm willing to run some tests. Do you have any suggestions for measuring the performance or a specific benchmark for instance?
Unfortunately I won't be able to test it against the proprietary fglrx driver, as some wayland support is enabled since fedora 20 which isn't supported by any proprietary graphics card driver at this moment (as far as I know).

i'd like to know the milliseconds per frame inside of the "outpost" level. Once in game, go into the console and type metrics("fps");

Sorry for the late reply, I've been a bit busy lately. Anyway, if I'm able to fix this issue I will check it and post the results here :)

I have had the same issue using the Nouveau driver.

Thanks for the log :)
It is true that Wayland is not enabled by default, but as far as I know the support of Wayland was enabled in some packages which made the system crash when using the proprietary AMD drivers. I remember reading something about people recompiling the packages without Wayland support before getting fglrx to work. But to be honest, he last time that I checked was about a year ago so things might have improved by now.

Could you please test https://github.com/GarageGames/Torque3D/pull/1348 and see if this solves the issue on nouveau for you as well? The PR isn't ready for merging yet but it should fix this issue.


⚡ Update embed for your customers usage scenario

#sign-off

@KesemSharabi
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@mberdugo for awareness.
@peter-myers - for consistency, can you please use the terms Embed for your customers and Embed for your organization instead of 'for your customers' and 'for your organization'.

@KesemSharabi - thanks for pointing that out. I've updated the scenario terms in the new article and related guidance articles also. Please note that this learning path uses incorrect scenario names. I don't have permission to work on that repo anymore, so I can't update the learning modules.

Hi, @KesemSharabi and/or @kfollis -- can you review this and sign off?
thx!

#sign-off


remove flutter dependency

I was curious about this package because it claims to be inspired by NgRx,
but I want to build my state in a Dart package, that doesn't depend on Flutter.
This state package should be imported by the Flutter app package, but not depend on Flutter itself.
I'd prefer the state and the Flutter part to be 2 separate packages where only the later depends on Flutter if there is some actual integration (similar to https://pub.dev/packages/flutter_redux)
Would you consider such a change?

Hi @Jordan-Nelson thanks for your response and explaining your plans and ideas.
I don't think I'll be able to do a PR short term.
Naming is hard here, because "rx" is used a lot.
My suggestion would be "dart_rx".

@zoechi - A first draft of the separated lib is in the branch feat/dart-refactor. Still haven't landed on what to call the dart lib. For now I have named it flutter_rx_core.

Great :)
The name makes sense.
I'm eager to try it out but I won't be on my computer for several days.

@zoechi - The initial version of flutter_rx_core has been published, along with a new version of flutter_rx.
flutter_rx_core is pretty bare bones. I did not add an example or much to the readme. I may do that later. The flutter_rx readme is up to date though and generally everything applies to the core lib as well, minus the StoreProvider and StoreConnector widgets.
https://pub.dev/packages/flutter_rx
https://pub.dev/packages/flutter_rx_core


Mastodon AP delivery: 401 Unable to fetch key JSON/Public key not found for key...

We started seeing these errors today on AP delivery to Mastodon inboxes.  Fixing that now, but I'm worried about how long we'd been doing that and whether Mastodon instances will think the id change means they're two different accounts. 😐

Example log:
}
I 2022-11-17 13:14:56.423815+00:00 [requests.post](http://requests.post/) https://mastodon.social/users/carolgilabert/inbox {...}
I 2022-11-17 13:14:57.298774+00:00 Received 401: Unable to fetch key JSON at https://fed.brid.gy/blogroll.jvt.me
W 2022-11-17 13:14:57.299594+00:00 401 Client Error: Unauthorized for url: https://mastodon.social/users/carolgilabert/inbox ; Unable to fetch key JSON at https://fed.brid.gy/blogroll.jvt.me
W 2022-11-17 13:14:57.299958+00:00   File "/layers/[google.python.pip/pip/lib/python3.9/site-packages/oauth_dropins/webutil/util.py](http://google.python.pip/pip/lib/python3.9/site-packages/oauth_dropins/webutil/util.py)", line 1583, in call
    resp.raise_for_status()

  File "/layers/[google.python.pip/pip/lib/python3.9/site-packages/requests/models.py](http://google.python.pip/pip/lib/python3.9/site-packages/requests/models.py)", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)


useTransition does not update enter values

🐛 Bug Report
To Reproduce
//const [selectedBookTransitions] = useTransition(
const selectedBookTransitions = useTransition(
  selectedBooks,
  {
    config: { ...config.molasses },
    keys: book => book._id,
    from: { opacity: 0, transform: "translate3d(-25%, 0px, 0px)" },
    // from: (book, b) => {
    //   console.log("from", book._id, b);
    //   return { opacity: 0, transform: "translate3d(-25%, 0px, 0px)" };
    // },
    enter: selectedBooks.map((book, b) => {
      console.log("ENTER", book._id, b, displaySizes[book._id]);
      return { opacity: 1, height: displaySizes[book._id], transform: "translate3d(0%, 0px, 0px)" };
    }),
    leave: (book, b) => {
      console.log("leave", book._id, b);
      return { opacity: 0, height: 0, transform: "translate3d(25%, 0px, 0px)" };
    }
  },
  //[selectedBooks, displaySizes]
);

I know there's some implementation details missing, but this appears to work perfectly. After adding one item, in the console I can see "ENTER" logging with updated, correct values. However, the animated item does NOT have the new, updated height. Its height style attribute is empty in the dom.

That said, if I add other items to the selectedBooks array, they work perfectly, and show up with the correct height values.
As you can see from the commented out code, I've also tried this with the dep arrays, but I've never quite been able to get that to work, either.
Is this a bug, or do I in fact need dep arrays for this to work, and have just been using them incorrectly. I know the return values change when you use a dep array, and there seems to be an update function returned as the second value in the array, but I haven't quite been able to get that to work, and the few docs I saw on them
https://aleclarson.github.io/react-spring/v9/#Dependency-arrays
were limited to useSpring.
Expected behavior
enter values would update appropriately.
Link to repro (highly encouraged)
None yet but I can make one if absolutely needed.
Environment

react-spring v9 rc3
react v0.0.0-experimental-33c3af284

Sounds like you need the update prop. Did you try that?
update: book => {
  console.log("UPDATE", book._id, displaySizes[book._id]);
  return { height: displaySizes[book._id] };
}),

Works perfectly. Thank you SO much. I'm loving react-spring more and more.


memory size problem

Hi, authors, How to change the memory size during inference?

Hi, authors, How to change the memory size during inference?

Set the hyper-parameter num_segments (I am clickable) in your inference config files.

This issue is closed. Feel free to create new issues if you have any questions.


follow-chain ParseError

Is there an existing issue?

[X] I have searched the existing issues

Experiencing problems? Have you tried our Stack Exchange first?

[X] This is not a support question.

Description of bug
When running node try-runtime --execution=native --chain=<chain>--no-spec-check-panic follow-chain --uri <uri>, I get the following panic:
Thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ParseError(Error("unknown field `block`, expected `header` or `extrinsics`", line: 0, column: 0))', /home/sander/.cargo/git/checkouts/substrate-f4423eebfa0046a3/7a4e516/utils/frame/try-runtime/cli/src/commands/follow_chain.rs:110

This is the code that panics:
https://github.com/paritytech/substrate/blob/11c50578549969979121577cde987ad3f9d95bd8/utils/frame/try-runtime/cli/src/commands/follow_chain.rs#L108-L111
Steps to reproduce
No response

Can you try this against #12537?
In general, if the block format against the live chain and your local runtime have changed, then there's nothing we can do and follow-chain won't work.

Hi, I have tried this - we are now on polkadot 0.9.36 which includes that PR. The error above no longer occurs, but now we get 'Bad input data provided to execute_block: Codec error. And this is with a wasm blob that is essentially identical to the chain we are connecting to (except compiled with try-runtime). So there is no change in the block format or anything. Any idea @kianenigma ?

Hi, I have tried this - we are now on polkadot 0.9.36

is the aforementioned PR in this release? if so, please provide your update command that you run, with the new --runtime flag etc.

is the aforementioned PR in this release? if so, please provide your update command that you run, with the new --runtime flag etc.

It is, yea, according to the changelog at https://github.com/paritytech/polkadot/releases/tag/v0.9.36 .
The command that I run is
<binary>  try-runtime --wasm-execution=compiled --chain=<path-to-json> --runtime <path-to-wasm> follow-chain --uri <url>

Hey @sander2, could you try this and let me know if you still encounter this issue?
cargo install --git https://github.com/paritytech/try-runtime-cli --branch liam-v0.1.0
try-runtime --runtime <path-to-wasm> follow-chain --uri <url>


[Tree chart] metric control disappeared

The tree chart's metric control disappeared when switching from pie chart to tree chart.
Expected results

Actual results

How to reproduce the bug

Go to 'Explore'
Select 'Pie Chart'
Switch to 'Tree Chart'
See error

Environment
(please complete the following information):

superset version: superset version
python version: python --version
node.js version: node -v

Checklist
Make sure to follow these steps before submitting your issue - thank you!

[ ] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[ ] I have reproduced the issue with at least the latest released version of superset.
[ ] I have checked the issue tracker for the same issue and I haven't found one similar.

Additional context
Add any other context about the problem here.

Not only pie chart. It can be reproduced that as long as a single metric chart is switched to a tree chart.

@junlincc Working on it.

thank you team for reporting and picking it up proactively! @stephenLYZ @michael-s-molina 🙏


Move graphql tools web

Description
This PR move all the packages over from https://github.com/Shopify/graphql-tools-web.
Will be publishing a minor version of all 7 packages added indicating the move.
🗒 Note that while the CLA status is failing. It is failing due to the contribution of an ex-employee in https://github.com/Shopify/graphql-tools-web
The review only need to be done on the last commit, the rest of history are from graphql-tools-web.
Checklist

[x] I have added a changelog entry, prefixed by the type of change noted above (Documentation fix and Test update does not need a changelog as we do not publish new version)

🗒 Note that while the CLA status is failing. It is failing due to the contribution of an ex-employee in https://github.com/Shopify/graphql-tools-web

Sewing-kit test using beta release here https://github.com/Shopify/sewing-kit/pull/2599


Increase the timeout

Coverage decreased (-0.009%) to 43.86% when pulling aecdccc61c32b901f793333526211621c4200de3 on ProlongTimeout into ed20fccc2bbca84e0cf2b00cf8f48b6996064f20 on master.


Consider adding a range variant of absent()

Currently absent() implicitly looks back 5 minutes due to old staleness, with new staleness it looks only at the last sample so alerts based on it are likely to be much more sensitive.
The general solution to this is to use a longer FOR clause, but for longer time periods this presumes that Prometheus was up during that time as #422 isn't resolved.
Where I see this as relevant is alerts for batch jobs, for it to catch both the job not running recently and not running ever you'd either have two alerts (with users often forgetting the absent alert) or do time() -  last_push time > 3600 or absent(count_over_time(last_push_time[1h])) to combine it into one. The problem with the latter being that the RHS won't return the labels of the range vector.
Thus I propose adding a range variant of absent(), I'm unsure on the name, absent_over_time is my first thought.
Arguments against this are similarly named functions (though no worse than we already have), that this is doable with two alerts plus a FOR clause once #422 is fixed, and what I propose is also possible in a verbose way using vector and label_replace.
Thoughts?

This would help you : -
https://niravshah2705-software-engineering.blogspot.com/2018/08/prometheus-monitoring.html
Recording rule:

record: stackdriver_pubsub:scraptime
expr: timestamp(stackdriver_pubsub_topic_pubsub_googleapis_com_topic_send_request_count)

Alert rule:
time() - max_over_time(stackdriver_pubsub:scraptime[5h]) > 3600 or sum_over_time(stackdriver_pubsub_topic_pubsub_googleapis_com_topic_send_request_count[30m]) < 5

This would be very handy right now. I'm trying to write a pre-deployment check for our alerting rules. The idea is that metric selectors underlying alerting expression should be defined. So for example if the alert expression is up{job="postgres"} == 0, the pre-deployment check should fail if absent(up{job="postgres"}).
Unfortunately some of our metrics are flaky (Particularly relating to the HAProxy exporter) so it's not uncommon for a metric to be undefined for some time even though the monitored service is operating normally. If there were a way to do absent_over_time(up{job="postgres"}[1d]) that would be ideal for our purposes!
Do you know of any workaround that might do instead?

I once made an experimental implementation of absent_over_time in https://github.com/ekarak/prometheus/tree/feature/absent-over-time, the code is https://github.com/ekarak/prometheus/commit/827c0277f09127d461f19f794b81bc3d7ccc8701
However the approach taken was a bit complex, I used FFT to get the scrape frequency for each timeseries, then I'd evaluate abset_over_time to 1 whenever a sample was not received near the next expected timestamp

This wouldn't be looking for gaps, it's looking for samples being completely missing.

any update?


boolean is not assignable to false in type union discriminator field

TypeScript Version:
3.3.4000
Search Terms:
I used the search results provided when typing this issue's title and collected the results in the Related Issues section.
Code
type T1 = { flag: true; } | { flag: false; };
type T2 = true | false;
const flag = confirm('true | false');
const demo1: T1 = { flag };
const demo2: T2 = flag;

type T3 = { flag: true; value: 'a' | 'b' | 'c'; } | { flag: false; value: 'a' | 'b'; };
const value = 'a'; // Matches `'a' | 'b'`
const demo3: T3 = { flag, value: 'a' };

Expected behavior:
The code compiles with no errors.
Actual behavior:
The compiler displays an error on demo1 and demo3 lines, saying that boolean is not assignable to false. For this error to go away, one has to wrap the line in an if-else statement, passing a literal true in the if branch and false in the else branch.
The TypeScript compiler inference is probably not realizing that the rest of the union type members are compatible whichever way flag goes.
Playground Link:
TypeScript Playground
My repro repo
Related Issues:

#10657 which says see #10432 which says fixed in #10577 which says released in release-2.0
#19212 which seems to be about inheritance issues which I do not demonstrate
#17882 where the union members are not compatible between true and false which mine are

Nevermind, I have realized (of course only after posting this) that even though the union members are compatible between the true and false values of the union discriminator field, TypeScript still has no way of inferring the actual union member - it could be either, but it has no way of determining which one to take it for, so the code is rightfully rejected it seems like.


iohub convert would be more efficient if it reads whole XYZ volumes at a time

Conversion to zarr is turning our to be one of the slower steps in our analysis pipelines.
Currently iohub convert reads and writes one image at a time using a call to reader.get_image(P, T, C, Z). The conversion would be faster if we read and write whole XYZ volumes at a time using reader.get_zarr(P)[T, C].

The get_zarr method of the MM readers except NDTiffReader (which returns a Dask array instead of Zarr) will build the 5D zarr array in memory at initialization time, i.e. 'eager' instead of 'lazy'. Since the arrays can well be larger than memory, this is not really feasible. For fast ndtiff conversion, see this (outdated) example. Also see https://github.com/czbiohub-sf/iohub/issues/176#issuecomment-1682687978.


Deleting Box's does nothing

No error message provided to the user (although thats a separate issue)
Hitting the delete button for a box has no effect

Distrobox wanted the container stopped prior to deleting. This is now done using the -f flag to force deleting


 But the docs never say.

rake ci:setup:minitest test
rake ci:setup:rspec spec # This is what I needed
rake ci:setup:cucumber features
rake ci:setup:spinach features```


Error : IDA 7.0 cannot save

When i trying to save all my constrains in AngrIDA, got this problem

Traceback (most recent call last):
File "C:/Program Files/IDA 7.0/plugins\idangr\main_gui.py", line 649, in save_clicked
save_ctx(filename)
File "C:/Program Files/IDA 7.0/plugins\idangr\main_gui.py", line 47, in save_ctx
pickle.dump(_idangr_ctx, fh)
File "C:\python27-x64\Lib\pickle.py", line 1376, in dump
Pickler(file, protocol).dump(obj)
File "C:\python27-x64\Lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 401, in save_reduce
save(args)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 568, in save_tuple
save(element)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 422, in save_reduce
self._batch_setitems(dictitems)
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 606, in save_list
self._batch_appends(iter(obj))
File "C:\python27-x64\Lib\pickle.py", line 621, in _batch_appends
save(x)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 401, in save_reduce
save(args)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 568, in save_tuple
save(element)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\python27-x64\Lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\python27-x64\Lib\pickle.py", line 669, in _batch_setitems
save(v)
File "C:\python27-x64\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\python27-x64\Lib\pickle.py", line 606, in save_list
self._batch_appends(iter(obj))
File "C:\python27-x64\Lib\pickle.py", line 621, in _batch_appends
save(x)
File "C:\python27-x64\Lib\pickle.py", line 306, in save
rv = reduce(self.proto)
File "C:\python27-x64\Lib\copy_reg.py", line 84, in _reduce_ex
dict = getstate()
File "C:\python27-x64\lib\site-packages\cle\backends\elf\elf.py", line 386, in getstate
raise ValueError("Can't pickle an object loaded from a stream")
ValueError: Can't pickle an object loaded from a stream

*IDAngr
I will remove this ASAP, saving the state to a file was supported only in the first versions and probably the lastest angr 7 changes have broken the code.
Use a script if u want to do complex stuffs from the debugger state.


Upgrade Chalk & use its dyn/impl trait support (Not yet working)

This doesn't work yet, I think because the implementation in Chalk isn't quite complete yet. Just posting it to make note of that.

Just wondering, since https://github.com/rust-lang/chalk/issues/275 has been merged and it's supposed to make dyn Trait work, whether this can be merged?

No, there were some chalk API changes and it's not trivial to update it.

Yeah, it'll be a bit more complicated. I'll close this for now, since I'll make a new PR anyway.


gergo/urlCompare

Fix warnings about None type units being set on Base objects Add proper units enum implementation
update tests
remove checking for the fetched users email
test for python311
py311 is not yet supported by circleci base images
reformat stuff, fix backwards compatible typing
remove unused literal
remove literal import
fix stream wrapper matching on accounts with subdomain url-s

Description & motivation

Changes:

To-do before merge:

Screenshots:

Validation of changes:

Checklist:

[ ] My pull request follows the guidelines in the Contributing guide?
[ ] My pull request does not duplicate any other open Pull Requests for the same update/change?
[ ] My commits are related to the pull request and do not amend unrelated code or documentation.
[ ] My code follows a similar style to existing code.
[ ] I have added appropriate tests.
[ ] I have updated or added relevant documentation.

References

fixes #214


WASM: update wabt and spec tests

Had to completely remove wabt from legacy build because it just doesn't build anymore.
Account for the 2 new nan assert types.

This change is

@MikeHolman @curtisman Can you review this, mostly the changes I made for the build (ie: project file/property sheets).
Aside from that the only things I changed are in test/WasmSpec/spec.js WabtInterface.cpp.
YOu can review by commits and skip the commits updating wabt and the spec tests

Right now I don't know how to fix the xplat break.
It looks like wabt's header files included in WabtInterface are conflicting with other includes in the Runtime.Library project.
I am not sure how to get a project that can use both wabt and chakra.
I might have to create an api file in wabt with the minimal set of things exposed.

:shipit:


PowerRename: add Variable Patterns for Original file names

Description of the new feature / enhancement
Add a list of several Variable Patterns for Original file names similar to existing Variable Patterns for Replace With renamed files.
Scenario when this would be used?
When renaming photo files in bulk from an event, users would be able to select from several available Variable Patterns for Original file names to delete automatic individual file numerals generated by cameras as an initial step before renaming files using variable patterns for Replacing with text.
Supporting information
PowerRename is great for the renaming part, but quite limited for selecting original filenames in bulk. Cell and other digital cameras automatically add dates (easy enough to eliminate) and unique 6-digit numbers (in my Samsung's case) that are not in predictable numeric patterns. I can eliminate part of these numbers but have to leave a portion (final 4 digits) from these numbers on each photo because I cannot create a bulk Original name for all of them, as there are no variable patterns to represent them all before Replacing with (new) text. Thank you!

this is where regular expressions come in for pattern matching.
https://learn.microsoft.com/en-us/windows/powertoys/powerrename#use-regular-expressions


all docs served via gitbook.io are broken

if i hit up https://mycroft.ai/documentation
it is in raw markdown
and any link seems to redirect there
consider
https://duckduckgo.com/?q=mycroft+linux+pocketsphinx&t=lm&atb=v179-1&ia=web
links to
https://mycroft-ai.gitbook.io/docs/using-mycroft-ai/get-mycroft/linux
, which redirects to the root doc
https://mycroft.ai/documentation

Thanks for the heads up fermulator. All the links should be working now.
The main /documentation might take a few minutes for caches to refresh

Verified fixed! Thank you.

(what was the root cause out of curiosity?)

My fault :sweat_smile:
I was looking at DNS settings in the Gitbook GUI so we can switch it over to docs.mycroft.ai rather than https://mycroft-ai.gitbook.io/docs/
For some reason hitting cancel saved the changes instead of leaving them as is which meant Gitbook was trying to connect to that subdomain and ending up at our old docs.
PSA: Don't even look at the DNS settings of a production system!


Add new localizations: RU, BY

Thank you for your pull request! I like it!
Is this ready to be merged?

Thank you for your pull request! I like it!
Is this ready to be merged?

Yes, i made local patch to "~/.emacs.d/elpa/org-static-blog". And it works fine

Cool to see collaboration here. Please notify once you are happy with the pull request and it can be merged.

Cool to see collaboration here. Please notify once you are happy with the pull request and it can be merged.

It wouldbe so cool, if i can just load package with patch from melpa!!!

LGTM 👍

Thank you very much, then!
Melpa will typically pick up on these changes within 24 hours.


Server and Client on one device, core dump on using uninitalized NimBLEAdvertisedDevice

I'm getting a core panic when running code that connects to a BLE server. I am using NimBLE 1.4.1, ESP32-S3, Arduino Version: 2.1.1-nightly-20230627, and derived by code from https://github.com/h2zero/NimBLE-Arduino/blob/release/1.4/examples/NimBLE_Server/NimBLE_Server.ino and https://github.com/h2zero/NimBLE-Arduino/blob/release/1.4/examples/NimBLE_Client/NimBLE_Client.ino.
My code crashes when executing:
    if (!pClient->connect(advDevice))
    {
      /** Created a client but failed to connect, don't need to keep it as it has no data */
      NimBLEDevice::deleteClient(pClient);
      Serial.println("Failed to connect, deleted client");
      return false;
    }

I'm going to keep debugging to solve the problem, and I will post the solution here. Still, if anyone wants to offer me ideas, solutions, and criticism I would be glad to receive it. Thanks, in advance.
Here is what I see in the Serial Monitor:
CALLIOPE-F4: Server advertising started
CALLIOPE-F4: BLE Advertised Device found: Name: CALLIOPE-B4, Address: 60:55:f9:f5:c3:b5, serviceUUID: 7d9029fe-48d5-49e0-b9ad-8fd7dac70354
New client created
a
b
c
advDevice == nothing
CALLIOPE-F4: Failed to connect to server
CALLIOPE-F4: BLE Advertised Device found: Name: CALLIOPE-B4, Address: 60:55:f9:f5:c3:b5, serviceUUID: 7d9029fe-48d5-49e0-b9ad-8fd7dac70354
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x28 (SPI_FAST_FLASH_BOOT)
Saved PC:0x420c07e2
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a38
entry 0x403c98d4

BLE.h contents:
#ifndef _BLE_
#define _BLE_

#include "Arduino.h"
#include <WiFi.h>

#include "config.h"
#include "secrets.h"

#include <NimBLEDevice.h>

class BLE
{
  public:
    BLE();
    void begin();
    void loop();
    String getHeading();
    void setHeading( String heading );
    String getHeadingValue();
    bool connectToServer();

  private:
    std::string devname;
    int mycounter;
    unsigned long serverWaitTime;
    unsigned long clientWaitTime;
    String heading;
};

#endif // _BLE_

BLE.cpp contents:
 Reflections, distributed entertainment device

 Repository is at https://github.com/frankcohen/ReflectionsOS
 Includes board wiring directions, server side components, examples, support

 Licensed under GPL v3 Open Source Software
 (c) Frank Cohen, All rights reserved<EMAIL_ADDRESS> Read the license in the license.txt file that comes with this code.

 I originally tried using the ESP32 blue BLE library. I ran out of memory. Switched to
 NimBLE-Arduino, an Arduino fork of Apache NimBLE, a replacement open-source BLE library
 https://github.com/h2zero/NimBLE-Arduino
 https://www.arduino.cc/reference/en/libraries/nimble-arduino/
 https://h2zero.github.io/esp-nimble-cpp/md__migration_guide.html#autotoc_md46

Todo:
Make this work among multiple Reflections devices
Balance the active scanning for battery life

*/

#include "BLE.h"

BLE::BLE(){}

// Server
static NimBLEServer* pServer;
static NimBLECharacteristic* pHeadingCharacteristic;
static boolean serverConnected;
static boolean clientConnected;
static String devicename;
static NimBLERemoteCharacteristic* pRemoteCharacteristic;
static NimBLEAdvertisedDevice* myDevice;
static boolean doConnect = false;
static boolean connected = false;
static boolean doScan = false;
static String remotename;
static NimBLEAdvertisedDevice* advDevice;
static uint32_t scanTime = 0; /** 0 = scan forever */

static BLEUUID serviceUUID( SERVICE_UUID_CALLIOPE );
static BLEUUID charUUID( CHARACTERISTIC_UUID_HEADING );

// Client

String BLE::getHeading()
{
  return heading;
}

void BLE::setHeading( String _heading )
{
  heading = _heading;
}

String BLE::getHeadingValue()
{
  String myc = String( mycounter++ ) + heading;
  std::string mys = myc.c_str();
  return myc;
}

/** Callback to process the results of the last scan or restart it */
void scanEndedCB(NimBLEScanResults results){
    Serial.println("Scan Ended");
}

/**
 * Scan for BLE servers and find the first one that advertises the service we are looking for.
 */
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
 /**
   * Called for each advertising BLE server.
   */

  void onResult(BLEAdvertisedDevice* advertisedDevice)
  {
    //Serial.print( devicename );
    //Serial.print(": BLE advertised device found: ");
    //Serial.println(advertisedDevice->toString().c_str());

    // We have found a device, let us now see if it contains the service we are looking for.
    if ( advertisedDevice -> haveServiceUUID() && advertisedDevice -> isAdvertisingService( serviceUUID ) )
    {
      remotename = advertisedDevice->toString().c_str();

      Serial.print( devicename );
      Serial.print(": BLE Advertised Device found: ");
      Serial.println( remotename );

      BLEDevice::getScan()->stop();
      myDevice = advertisedDevice;
      doConnect = true;
      doScan = true;

    }
  }
};

class ServerCallbacks: public NimBLEServerCallbacks {

    void onConnect(NimBLEServer* pServer)
    {
      Serial.print( devicename );
      Serial.println(": Server connected");
      NimBLEDevice::startAdvertising();
    };

    void onDisconnect(NimBLEServer* pServer)
    {
      Serial.print( devicename );
      Serial.println(": Client disconnected, starting advertising");
      NimBLEDevice::startAdvertising();
    };

    void onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc) {
      Serial.print( devicename );
      Serial.printf(": BLE MTU updated: %u for connection ID: %u\n", MTU, desc->conn_handle);
    };
};

class MyClientCallback: public BLEClientCallbacks {

  void onConnect(BLEClient* pclient)
  {
    Serial.print( devicename );
    Serial.println(": onConnect");
  }

  void onDisconnect(BLEClient* pclient) {
    connected = false;
    Serial.print( devicename );
    Serial.println(": onDisconnect");
  }

};

/**  None of these are required as they will be handled by the library with defaults. **
 **                       Remove as you see fit for your needs                        */
class ClientCallbacks: public NimBLEClientCallbacks {
    void onConnect(NimBLEClient* pClient) {
        Serial.println("Connected");
        /** After connection we should change the parameters if we don't need fast response times.
         *  These settings are 150ms interval, 0 latency, 450ms timout.
         *  Timeout should be a multiple of the interval, minimum is 100ms.
         *  I find a multiple of 3-5 * the interval works best for quick response/reconnect.
         *  Min interval: 120 * 1.25ms = 150, Max interval: 120 * 1.25ms = 150, 0 latency, 60 * 10ms = 600ms timeout
         */
        pClient->updateConnParams(120,120,0,60);
    };

    void onDisconnect(NimBLEClient* pClient) {
        Serial.print(pClient->getPeerAddress().toString().c_str());
        Serial.println(" Disconnected - Starting scan");
        NimBLEDevice::getScan()->start(scanTime, scanEndedCB);
    };

    /** Called when the peripheral requests a change to the connection parameters.
     *  Return true to accept and apply them or false to reject and keep
     *  the currently used parameters. Default will return true.
     */
    bool onConnParamsUpdateRequest(NimBLEClient* pClient, const ble_gap_upd_params* params) {
        if(params->itvl_min < 24) { /** 1.25ms units */
            return false;
        } else if(params->itvl_max > 40) { /** 1.25ms units */
            return false;
        } else if(params->latency > 2) { /** Number of intervals allowed to skip */
            return false;
        } else if(params->supervision_timeout > 100) { /** 10ms units */
            return false;
        }

        return true;
    };

    /********************* Security handled here **********************
    ****** Note: these are the same return values as defaults ********/
    uint32_t onPassKeyRequest(){
        Serial.println("Client Passkey Request");
        /** return the passkey to send to the server */
        return 123456;
    };

    bool onConfirmPIN(uint32_t pass_key){
        Serial.print("The passkey YES/NO number: ");
        Serial.println(pass_key);
    /** Return false if passkeys don't match. */
        return true;
    };

    /** Pairing process complete, we can check the results in ble_gap_conn_desc */
    void onAuthenticationComplete(ble_gap_conn_desc* desc){
        if(!desc->sec_state.encrypted) {
            Serial.println("Encrypt connection failed - disconnecting");
            /** Find the client with the connection handle provided in desc */
            NimBLEDevice::getClientByID(desc->conn_handle)->disconnect();
            return;
        }
    };
};

/** Handler class for server characteristic actions */

class CharacteristicCallbacks: public NimBLECharacteristicCallbacks {
    void onRead(NimBLECharacteristic* pCharacteristic){
      Serial.print( devicename );
      Serial.print(": BLE server ");
      Serial.print(pCharacteristic->getUUID().toString().c_str());
      Serial.print(": onRead(), value: ");
      Serial.println(pCharacteristic->getValue().c_str());
    };

    void onWrite(NimBLECharacteristic* pCharacteristic) {
      Serial.print( devicename );
      Serial.print( ": ");
      Serial.print(pCharacteristic->getUUID().toString().c_str());
      Serial.print(": onWrite(), value: ");
      Serial.println(pCharacteristic->getValue().c_str());
    };
    /** Called before notification or indication is sent,
     *  the value can be changed here before sending if desired.
     */
    void onNotify(NimBLECharacteristic* pCharacteristic) {
      Serial.print( devicename );
      Serial.println(": Sending notification to clients");
    };

    /** The status returned in status is defined in NimBLECharacteristic.h.
     *  The value returned in code is the NimBLE host return code.
     */
    void onStatus(NimBLECharacteristic* pCharacteristic, Status status, int code) {
      String str = ("Notification/Indication status code: ");
      str += status;
      str += ", return code: ";
      str += code;
      str += ", ";
      str += NimBLEUtils::returnCodeToString(code);

      Serial.print( devicename );
      Serial.print( ": ");
      Serial.println(str);
    };

    void onSubscribe(NimBLECharacteristic* pCharacteristic, ble_gap_conn_desc* desc, uint16_t subValue) {
        String str = "Client ID: ";
        str += desc->conn_handle;
        str += " Address: ";
        str += std::string(NimBLEAddress(desc->peer_ota_addr)).c_str();
        if(subValue == 0) {
            str += " Unsubscribed to ";
        }else if(subValue == 1) {
            str += " Subscribed to notfications for ";
        } else if(subValue == 2) {
            str += " Subscribed to indications for ";
        } else if(subValue == 3) {
            str += " Subscribed to notifications and indications for ";
        }
        str += std::string(pCharacteristic->getUUID()).c_str();

        Serial.println(str);
    };
};

/** Notification / Indication receiving handler callback */

void notifyCB(NimBLERemoteCharacteristic* pRemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify){
    std::string str = (isNotify == true) ? "Notification" : "Indication";
    str += " from ";
    /** NimBLEAddress and NimBLEUUID have std::string operators */
    str += std::string(pRemoteCharacteristic->getRemoteService()->getClient()->getPeerAddress());
    str += ": Service = " + std::string(pRemoteCharacteristic->getRemoteService()->getUUID());
    str += ", Characteristic = " + std::string(pRemoteCharacteristic->getUUID());
    str += ", Value = " + std::string((char*)pData, length);
    Serial.println(str.c_str());
}

/** Create a single global instance of the callback class to be used by all clients */
static ClientCallbacks clientCB;

bool BLE::connectToServer()
{
  NimBLEClient* pClient = nullptr;

  /** Check if we have a client we should reuse first **/
  if(NimBLEDevice::getClientListSize())
  {
    /** Special case when we already know this device, we send false as the
      *  second argument in connect() to prevent refreshing the service database.
      *  This saves considerable time and power.
      */
    pClient = NimBLEDevice::getClientByPeerAddress(advDevice->getAddress());
    if(pClient)
    {
      if(!pClient->connect(advDevice, false))
      {
        Serial.print( devicename );
        Serial.println(": Reconnect failed");
        return false;
      }
      Serial.print( devicename );
      Serial.println(": Reconnected client");
    }
    else
    {
      pClient = NimBLEDevice::getDisconnectedClient();
    }
  }

  /** No client to reuse? Create a new one. */
  if( !pClient )
  {
    if(NimBLEDevice::getClientListSize() >= NIMBLE_MAX_CONNECTIONS)
    {
      Serial.println("Max clients reached - no more connections available");
      return false;
    }

    pClient = NimBLEDevice::createClient();

    Serial.println("New client created");

    Serial.println("a");

    pClient->setClientCallbacks(&clientCB, false);
    /** Set initial connection parameters: These settings are 15ms interval, 0 latency, 120ms timout.
      *  These settings are safe for 3 clients to connect reliably, can go faster if you have less
      *  connections. Timeout should be a multiple of the interval, minimum is 100ms.
      *  Min interval: 12 * 1.25ms = 15, Max interval: 12 * 1.25ms = 15, 0 latency, 51 * 10ms = 510ms timeout
      */
    Serial.println("b");

    pClient->setConnectionParams(12,12,0,51);
    /** Set how long we are willing to wait for the connection to complete (seconds), default is 30. */
    pClient->setConnectTimeout(5);

    Serial.println("c");

    if ( advDevice )
    {
      Serial.println( "advDevice == something" );
    }
    else
    {
      Serial.println( "advDevice == nothing" );
      return false;
    }

    if (!pClient->connect(advDevice))
    {
      /** Created a client but failed to connect, don't need to keep it as it has no data */
      NimBLEDevice::deleteClient(pClient);
      Serial.println("Failed to connect, deleted client");
      return false;
    }

    Serial.println("d");
    if(!pClient->isConnected()) {
        if (!pClient->connect(advDevice)) {
            Serial.println("Failed to connect");
            return false;
        }
    }

    Serial.print("Connected to: ");
    Serial.println(pClient->getPeerAddress().toString().c_str());
    Serial.print("RSSI: ");
    Serial.println(pClient->getRssi());

    /** Now we can read/write/subscribe the charateristics of the services we are interested in */
    NimBLERemoteService* pSvc = nullptr;
    NimBLERemoteCharacteristic* pChr = nullptr;
    NimBLERemoteDescriptor* pDsc = nullptr;

    Serial.println("e");

    pSvc = pClient->getService( serviceUUID );
    if( pSvc )
    {
      pChr = pSvc->getCharacteristic( charUUID );

      if(pChr)
      {
        if(pChr->canRead()) {
            Serial.print(pChr->getUUID().toString().c_str());
            Serial.print(" Value: ");
            Serial.println(pChr->readValue().c_str());
        }

        /** registerForNotify() has been deprecated and replaced with subscribe() / unsubscribe().
          *  Subscribe parameter defaults are: notifications=true, notifyCallback=nullptr, response=false.
          *  Unsubscribe parameter defaults are: response=false.
          */
        if(pChr->canNotify()) {
            //if(!pChr->registerForNotify(notifyCB)) {
            if(!pChr->subscribe(true, notifyCB)) {
                /** Disconnect if subscribe failed */
                pClient->disconnect();
                return false;
            }
          }
        else if(pChr->canIndicate())
        {
          /** Send false as first argument to subscribe to indications instead of notifications */
          //if(!pChr->registerForNotify(notifyCB, false)) {
          if( !pChr -> subscribe(false, notifyCB) )
          {
            /** Disconnect if subscribe failed */
            pClient->disconnect();
            return false;
          }
        }
      }
    }
    else
    {
      Serial.print( devicename );
      Serial.println(": Service not found.");
    }

    Serial.println("Done with this device!");
    return true;
  }
}

static CharacteristicCallbacks chrCallbacks;

void BLE::begin()
{
  devname = "CALLIOPE-";
  std::string mac = WiFi.macAddress().c_str();
  devname.append( mac.substr( 15, 2 ) );
  NimBLEDevice::init( devname );

  devicename = devname.c_str();

  advDevice = nullptr;

  mycounter = 0;
  clientWaitTime = millis();
  clientConnected = false;
  serverWaitTime = millis();
  serverConnected = false;

  // Server set-up

  pServer = NimBLEDevice::createServer();
  pServer->setCallbacks( new ServerCallbacks() );

  NimBLEService* pService = pServer -> createService( SERVICE_UUID_CALLIOPE );

  pHeadingCharacteristic = pService -> createCharacteristic( CHARACTERISTIC_UUID_HEADING, NIMBLE_PROPERTY::READ );
  pHeadingCharacteristic -> setCallbacks( &chrCallbacks );

  pHeadingCharacteristic -> setValue( getHeadingValue() );

  pService->start();

  NimBLEAdvertising* pAdvertising = NimBLEDevice::getAdvertising();
  pAdvertising -> addServiceUUID( pService -> getUUID() );
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06);  // functions that help with iPhone connections issue
  pAdvertising->setMaxPreferred(0x12);

  NimBLEDevice::startAdvertising();

  Serial.print( devicename );
  Serial.println(": Server advertising started");

  // Client set-up

  // Retrieve a Scanner and set the callback we want to use to be informed when we
  // have detected a new device.  Specify that we want active scanning and start the
  // scan to run for 5 seconds.
  BLEScan* pBLEScan = BLEDevice::getScan();
  pBLEScan -> setAdvertisedDeviceCallbacks( new MyAdvertisedDeviceCallbacks() );
  pBLEScan -> setInterval(1349);
  pBLEScan -> setWindow(449);
  pBLEScan -> setActiveScan(true);
  pBLEScan -> start(5, false);
}

void BLE::loop()
{
  // Server
  if ((millis() - serverWaitTime) > 5000)
  {
    serverWaitTime = millis();

    String myc = String( mycounter++ ) + heading;
    std::string mys = myc.c_str();
    pHeadingCharacteristic->setValue( mys );
  }

  // Client

  if ((millis() - clientWaitTime) > 5000)
  {
    clientWaitTime = millis();

    // If the flag "doConnect" is true then we have scanned for and found the desired
    // BLE Server with which we wish to connect.  Now we connect to it.  Once we are
    // connected we set the connected flag to be true.

    if ( doConnect == true )
    {
      if ( connectToServer() )
      {
        Serial.print( devicename );
        Serial.println(": Connected to BLE server.");
        doScan = false;
        doConnect = true;
    }
      else
      {
        Serial.print( devicename );
        Serial.println(": Failed to connect to server" );
        doConnect = true;
        doScan = true;
      }
    }

    if(doScan)
    {
      NimBLEDevice::getScan()->start(0);  // this is just eample to start scan after disconnect, most likely there is better way to do it in arduino
      doScan = false;
    }
  }
}

This is a part of my Reflection's open source entertainment platform making project https://github.com/frankcohen/ReflectionsOS. The code needs to have server and client on the same device as the device may be in a room full of other devices, and there's no way to declare a single device to be a beacon or server. -Frank

Found it. Line 34: static NimBLEAdvertisedDevice* myDevice; needs to be named advDevice, and line 39 deleted, and line 93 needs to be advDevice = advertisedDevice; Of course, now I get a different error:
E NimBLEClient: A connection to 60:55:f9:f5:c3:b5 already exists
Digging into this next. I love C/C++, not.

@frankcohen Did you figure out your new error? I am having some problem

@frankcohen Did you figure out your new error? I am having some problem

I found that I was making some basic mistakes on how to initialize the libraries objects. The working code is in BLE.cpp and BLE.h in https://github.com/frankcohen/ReflectionsOS/tree/main/Devices/BlueFish/ReflectionsOfFrank. Glad to get your feedback and changes.

Thanks!
On Wed, Dec 27, 2023 at 2:27 PM Frank Cohen @.***>
wrote:

@frankcohen https://github.com/frankcohen Did you figure out your new
error? I am having some problem
I found that I was making some basic mistakes on how to initialize the
libraries objects. The working code is in BLE.cpp and BLE.h in
https://github.com/frankcohen/ReflectionsOS/tree/main/Devices/BlueFish/ReflectionsOfFrank.
Glad to get your feedback and changes.
—
Reply to this email directly, view it on GitHub
https://github.com/h2zero/NimBLE-Arduino/issues/561#issuecomment-1870570829,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFKFNLVXPKEP6GTRD2Y5P53YLRZBDAVCNFSM6AAAAAAZY2QPSOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZQGU3TAOBSHE
.
You are receiving this because you commented.Message ID:
@.***>


Placeholder for geocoded radiometric calibration parameters

This PR adds a placeholders for geocoded LUTs for radiometric calibration.
gamma and sigma_naught are geocoded and placed into the group /science/SENTINEL1/CSLC/metadata/calibration_information as shown in the screenshot below.

Also, what about the datasets in the noise group? Do they need to be moved as well in the placeholder group?


Reproduce GMIC's result

Hi,
I am trying to reproduce the GMIC's results on the CMMD dataset by using the ckpt "sample_model_1.p".
I failed to accomplish the evaluation with the docker file so I wrote my own data loader (copied a few functions from the GMIC repo like Crop_mammogram, get_optimal_center, ...) to do the evaluation.
All the DICOM files are converted to 16bit png. and flipped according to the side.
I failed to get the same AUC result (82.5) as reported in the paper, my reproduction result is 77.25. I am not quite sure where went wrong in my implementation so I post the image loader file below. Looking forward to hearing from you.
I am also wondering did you use the average of 10 random data augmentation (crop) method that is mentioned in the GMIC's paper to do the evaluation?
Cheers
import os
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from src.cropping.crop_mammogram import crop_mammogram_one_image, crop_img_from_largest_connected, image_orientation
from src.optimal_centers.get_optimal_centers import extract_center
from src.data_loading.loading import process_image
from multiprocessing import Pool
import multiprocessing

def crop_mammogram_one_image_mod(image, scan, num_iterations, buffer_size):
    """
    Crops a mammogram, saves as png file, includes the following additional information:
        - window_location: location of cropping window w.r.t. original dicom image so that segmentation
           map can be cropped in the same way for training.
        - rightmost_points: rightmost nonzero pixels after correctly being flipped
        - bottommost_points: bottommost nonzero pixels after correctly being flipped
        - distance_from_starting_side: number of zero columns between the start of the image and start of
           the largest connected component w.r.t. original dicom image.
    """

    try:
        # error detection using erosion. Also get cropping information for this image.
        cropping_info = crop_img_from_largest_connected(
            image,
            image_orientation(scan['horizontal_flip'], scan['side']),
            True,
            num_iterations,
            buffer_size,
            1 / 3
        )
    except Exception as error:
        print("\n\tFailed to crop image because image is invalid.", str(error))
    else:
        top, bottom, left, right = cropping_info[0]
        cropped_img = image[top:bottom, left:right]

        return cropping_info, cropped_img

def crop_mammogram_one_image_short_path(scan, input_data_folder, output_data_folder,
                                        num_iterations, buffer_size):
    """
    Crops a mammogram from a short_file_path

    See: crop_mammogram_one_image
    """
    full_input_file_path = os.path.join(input_data_folder, scan['short_file_path'] + '.png')
    full_output_file_path = os.path.join(output_data_folder, scan['short_file_path'].split("/")[-1] + '.png')
    cropping_info = crop_mammogram_one_image_mod(
        scan=scan,
        input_file_path=full_input_file_path,
        output_file_path=full_output_file_path,
        num_iterations=num_iterations,
        buffer_size=buffer_size,
    )
    try:
        a = list(zip([scan['short_file_path']] * 4, cropping_info))
    except:
        raise ValueError("None type: {}", scan)
    return list(zip([scan['short_file_path']] * 4, cropping_info))

def check_view(fn):
    view = fn.split("_")[1].split("-")[-1]
    side = fn.split("_")[2]
    if view == "1" or view == "3":
        return "CC", side
    elif view == "2" or view == "4":
        return "MLO", side
    else:
        raise ValueError("Unknow view {}".format(view))

root = "/mnt/HD/Dataset/CMMD/processed/IMAGE_FLIP"
fn = "D1-0001_1-1_R_16bit"

def read_data(path):
    # img = os.path.join(root, "{}.png".format(fn))
    fn = path.split("/")[-1][:-4]
    img = np.asarray(Image.open(path))

    view, side = check_view(fn)

    scan = {"side":side, "horizontal_flip":"NO"}

    cropped_image_info, cropped_img = crop_mammogram_one_image_mod(
            image=img,
            scan=scan,
            num_iterations=100,
            buffer_size=50,
        )

    datum = {
        "view"                       : view,
        "full_view"                  : "{}-{}".format(side, view),
        "window_location"            : cropped_image_info[0],
        "rightmost_points"           : cropped_image_info[1],
        "bottommost_points"          : cropped_image_info[2],
        "distance_from_starting_side": cropped_image_info[3],
    }
    opt_center = extract_center(datum, cropped_img)
    train = []
    for n in range(10):
        train_img = process_image(cropped_img.astype(np.float64), datum["full_view"], opt_center, norm=True)
        train.append(train_img)

    return np.stack(train)

Hey @Ch1kara , of course we can look into the pasted code, but before we do I think it's a good idea to investigate why the Docker approach failed. Our goal was to make sure that Docker approach works universally so that no one has to re-implement anything. Do you mind sharing what went wrong, what's your setup etc.? Happy to help with troubleshooting.

I forget exactly what was the issue (maybe related to the pickle file I made or some package error). I can re-run the whole process again from the beginning to see if it works this time. Thank you for your feedback!
Cheers

Installing collected packages: numpy, h5py, pillow, imageio, opencv-python, pytz, python-dateutil, pandas, scipy, torch, tqdm, torchvision, pyparsing, cycler, kiwisolver, matplotlib
  Running setup.py install for pillow: started
    Running setup.py install for pillow: finished with status 'error'
    Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-d58guygh/pillow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-dkwb1x0d-record/install-record.txt --single-version-externally-managed --compile:
    /usr/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
      warnings.warn(msg)
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageMorph.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/features.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageMath.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PcfFontFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageSequence.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/TiffTags.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageTk.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PngImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ExifTags.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageWin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/MicImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageStat.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/BlpImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageShow.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/FliImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageColor.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/MspImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/WalImageFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PaletteFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageCms.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/GimpGradientFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PSDraw.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageGrab.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageEnhance.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/_tkinter_finder.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/__main__.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/_util.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/FontFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/_binary.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageDraw2.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageFilter.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/SunImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ContainerIO.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageDraw.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImagePalette.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PyAccess.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PdfParser.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/BdfFontFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageOps.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageTransform.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/JpegPresets.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageFont.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/TarIO.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageMode.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/Image.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/_version.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/GifImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/CurImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImagePath.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageChops.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/__init__.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/ImageQt.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/GdImageFile.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
    running egg_info
    writing src/Pillow.egg-info/PKG-INFO
    writing dependency_links to src/Pillow.egg-info/dependency_links.txt
    writing top-level names to src/Pillow.egg-info/top_level.txt
    reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no files found matching '*.c'
    warning: no files found matching '*.h'
    warning: no files found matching '*.sh'
    warning: no previously-included files found matching '.appveyor.yml'
    warning: no previously-included files found matching '.clang-format'
    warning: no previously-included files found matching '.coveragerc'
    warning: no previously-included files found matching '.editorconfig'
    warning: no previously-included files found matching '.readthedocs.yml'
    warning: no previously-included files found matching 'codecov.yml'
    warning: no previously-included files matching '.git*' found anywhere in distribution
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
    warning: no previously-included files matching '*.so' found anywhere in distribution
    no previously-included directories found matching '.ci'
    writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
    running build_ext

    The headers or library files could not be found for zlib,
    a required dependency when compiling Pillow from source.

    Please see the install instructions at:
       https://pillow.readthedocs.io/en/latest/installation.html

    Traceback (most recent call last):
      File "/tmp/pip-build-d58guygh/pillow/setup.py", line 1024, in <module>
        zip_safe=not (debug_build() or PLATFORM_MINGW),
      File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 129, in setup
        return distutils.core.setup(**attrs)
      File "/usr/lib/python3.6/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.6/distutils/dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python3.6/distutils/command/install.py", line 589, in run
        self.run_command('build')
      File "/usr/lib/python3.6/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/usr/lib/python3.6/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.6/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/usr/lib/python3/dist-packages/setuptools/command/build_ext.py", line 78, in run
        _build_ext.run(self)
      File "/usr/lib/python3.6/distutils/command/build_ext.py", line 339, in run
        self.build_extensions()
      File "/tmp/pip-build-d58guygh/pillow/setup.py", line 790, in build_extensions
        raise RequiredDependencyException(f)
    __main__.RequiredDependencyException: zlib

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-d58guygh/pillow/setup.py", line 1037, in <module>
        raise RequiredDependencyException(msg)
    __main__.RequiredDependencyException:

    The headers or library files could not be found for zlib,
    a required dependency when compiling Pillow from source.

    Please see the install instructions at:
       https://pillow.readthedocs.io/en/latest/installation.html

    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-7dqaewmq/pillow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-eet3g51z-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-7dqaewmq/pillow/
The command '/bin/sh -c pip3 install --no-cache-dir --trusted-host pypi.python.org h5py==2.8.0     imageio==2.4.1     numpy==1.14.3     opencv-python==<IP_ADDRESS>     pandas==0.22.0     scipy==1.0.0     torch==1.1.0     torchvision==0.2.2     tqdm==4.19.8     matplotlib==3.0.2' returned a non-zero code: 1
Model extra arguments:
 - MODEL_INDEX=1
 - NUM_PROCESSES=10
 - PREPROCESS_FLAG=True

Starting docker container for nyu_gmic model.
Unable to find image 'nyu_gmic:latest' locally
docker: Error response from daemon: pull access denied for nyu_gmic, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

Running predict.sh for nyu_gmic model.
Error response from daemon: Container ce0338906b15f1ed3eb9c2aa590c2b71e85d7d27a814525a59df1779141698db is not running
Error: No such container:path: ce0338906b15:/home/predictions/nyu_gmic_experiment01_predictions.csv
ce0338906b15
ce0338906b15

Evaluating.
Traceback (most recent call last):
  File "/home/chikara/Documents/Published/mammogram/mammography_metarepository/./evaluation/score.py", line 191, in <module>
    main(sys.argv[1], sys.argv[2], sys.argv[3])
  File "/home/chikara/Documents/Published/mammogram/mammography_metarepository/./evaluation/score.py", line 180, in main
    breast_or_image = breast_or_image_level(prediction_file)
  File "/home/chikara/Documents/Published/mammogram/mammography_metarepository/./evaluation/score.py", line 15, in breast_or_image_level
    df = pd.read_csv(prediction_file, header=0)
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 586, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 482, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 811, in __init__
    self._engine = self._make_engine(self.engine)
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 1040, in _make_engine
    return mapping[engine](self.f, **self.options)  # type: ignore[call-arg]
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/io/parsers/c_parser_wrapper.py", line 51, in __init__
    self._open_handles(src, kwds)
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/io/parsers/base_parser.py", line 222, in _open_handles
    self.handles = get_handle(
  File "/home/chikara/.local/lib/python3.9/site-packages/pandas/io/common.py", line 702, in get_handle
    handle = open(
FileNotFoundError: [Errno 2] No such file or directory: '/home/chikara/Documents/Published/mammogram/mammography_metarepository/predictions/nyu_gmic_experiment01_predictions.csv'

thanks @Ch1kara, can you also let us know your setup params? E.g. your OS and version, Docker version and Python version?
cc @chledowski

bash run.sh nyu_gmic experiment01 /mnt/HD/Dataset/CMMD/processed/IMAGE_16 sample_data/preprocessed_images/ sample_data/cmmd_datalist.pkl predictions/ gpu 0 no_bootstrap
My OS version is Ubuntu 20.04, Python 3.9.6, Docker 20.10.10
I think I may have created an empty .pkl for the data, let me try to do it again.

Yeah, I have tried again and the issues remain the same.

Hi!
Looks like zlib1g-dev and libjpeg-dev were missing in the dockerfiles. Even though previously they were not needed.
Please check if using branch fix-pillow (https://github.com/nyukat/mammography_metarepository/tree/fix-pillow) solves the problem :)

Thanks for helping! It works, but not I have a CUDA error...
Running predict.sh for nyu_gmic model.
Stage 1: Crop Mammograms
Stage 2: Extract Centers
Stage 3: Run Classifier
  0%|                                                                                | 0/4 [00:00<?, ?it/s]THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=383 error=8 : invalid device function

Traceback (most recent call last):
  File "src/scripts/run_model.py", line 298, in <module>
    main()
  File "src/scripts/run_model.py", line 294, in main
    turn_on_visualization=args.visualization_flag,
  File "src/scripts/run_model.py", line 254, in start_experiment
    output_df = run_single_model(single_model_path, data_path, parameters, turn_on_visualization)
  File "src/scripts/run_model.py", line 219, in run_single_model
    output_df = run_model(model, exam_list, parameters, turn_on_visualization)
  File "src/scripts/run_model.py", line 182, in run_model
    output = model(tensor_batch)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/gmic/GMIC/src/modeling/gmic.py", line 116, in forward
    h_g, self.saliency_map = self.global_network.forward(x_original)
  File "/home/gmic/GMIC/src/modeling/modules.py", line 289, in forward
    last_feature_map = self.downsampling_branch.forward(x)
  File "/home/gmic/GMIC/src/modeling/modules.py", line 156, in forward
    h = layer(h)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/container.py", line 92, in forward
    input = module(input)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/gmic/GMIC/src/modeling/modules.py", line 56, in forward
    out = self.relu(out)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/activation.py", line 99, in forward
    return F.relu(input, inplace=self.inplace)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py", line 941, in relu
    result = torch.relu_(input)
RuntimeError: CUDA error: no kernel image is available for execution on the device
Copying results into the output csv file.
cp: cannot stat '/home/preprocessed_images/nyu_gmic_experiment01_sample_output/predictions.csv': No such file or directory
Error: No such container:path: 7aa61462aee5:/home/predictions/nyu_gmic_experiment01_predictions.csv
7aa61462aee5
7aa61462aee5

Do you think this could be related to the CUDA version? I am currently using 11.3

If I understand correctly, CUDA is backward compatible. So if you have 11.3 and the code uses 10.1, you should be able to run the code.
Can you check if it works on CPU?

@chledowski @Ch1kara
I checked the GMIC model on an AWS instance that was running CUDA 11.3, Docker 20.10.9 and Ubuntu 20. It worked fine with sample data, so no issues with CUDA/Docker/OS versioning here.
@Ch1kara my suggestion is that you try to investigate your docker+gpu setup locally. It seems like a local installation problem, but I'll keep this ticket open for a while in case you have further issues.
@chledowski I will merge #19 as well.

Thank you guys so much for helping, I can run the code with CPU now but on GPU the CUDA error still remains. Yeah, the CUDA error is pretty much related to the local setup, I will investigate this later.
I have got the result for CMMD,
Breast-level metrics:
 AUROC: 0.794 (95% CI: 0.776-0.811)
 AUPRC: 0.830 (95% CI: 0.812-0.848)
 Confidence intervals calculated with bootstrap with 2000 replicates.

There is still a few points difference in AUC.
(p.s I save CMMD DICOM file as 16bit png, and flip the images that are marked as "R")

great news @Ch1kara! One last thing: I noticed you said you flipped some CMMD images. I don't think any of the images should be flipped there, but let me know if you think otherwise? If you have this or other issues with CMMD data set pls feel free to open a new ticket. Thanks!

Yeah, I also notice flipping would cause trouble. Anyway, thank you and have a nice day :smiley: !


Launching the Editor: Unable to Initialize Video Driver after updated to macOS 12.3

Godot version
4.0.dev (a30d17fe23)
System information
macOS 12.3 arm64, M1
Issue description

Run a custom build  directly in the  "bin" folder is working well
Pack it into Godot.app and run it will show the Error prompt.

Error messages:
Godot Engine v4.0.alpha.custom_build.a30d17fe2 - https://godotengine.org
ERROR: No surface extension found, is a driver installed?
at: _initialize_extensions (drivers/vulkan/vulkan_context.cpp:353)
ERROR: Could not initialize Vulkan
at: DisplayServerOSX (platform/osx/display_server_osx.mm:3183)
Steps to reproduce
Run the packed Godot.app
Minimal reproduction project
No response

You probably need to update or reinstall the Vulkan SDK.

I installed the latest Vulkan SDK but it still can't work.  And since it works pretty well if directly run the executable in the bin folder, I guess there are some compatibility issues with files in the misc folder. It's my guess.

update:
4.0 alpha 5 downloaded from Godot site runs without any trouble.

How are you building and packaging your custom build? CC @bruvzg

ERROR: No surface extension found, is a driver installed?
at: _initialize_extensions (drivers/vulkan/vulkan_context.cpp:353)

That's usually happen when building with volk enabled and no Vulkan SDK installed.

Hi Akien,
I packed the Godot.app with following scripts:
set scroll speed to 10
cp -r misc/dist/osx_tools.app ./Godot.app
mkdir -p Godot.app/Contents/MacOS
cp bin/godot.osx.opt.tools.arm64 Godot.app/Contents/MacOS/Godot
chmod +x Godot.app/Contents/MacOS/Godot

It's best to build with statically linked MoltenVK, try adding use_volk=no arch=arm64 -j8 VULKAN_SDK_PATH=/Users/user_name/VulkanSDK/<IP_ADDRESS>/ (with your full VulaknSDK path) to the build command.

ERROR: No surface extension found, is a driver installed?
at: _initialize_extensions (drivers/vulkan/vulkan_context.cpp:353)

That's usually happen when building with volk enabled and no Vulkan SDK installed.

But everything ran well before a macOS update(12.3)

Update might wipe SDK symlinks in the system folders.
You can also try to copy libMoltenVK.dylib from the SDK to the Godot.app/Contents/MacOS/Frameworks (if building with use_volk=yes).

Update might wipe SDK symlinks in the system folders.
You can also try to copy libMoltenVK.dylib from the SDK to the Godot.app/Contents/MacOS/Frameworks (if building with use_volk=yes).

No luck both on  rebuild wtih "use_volk=no VULKAN_SDK_PATH=/Users/user_name/VulkanSDK/<IP_ADDRESS>/" added in build script  or copied the libMoltenVK.dylib to Godot.app folder :(


questions.xlsx added

I have added a sample question.xlsx of CIA-2 software testing.

I want you to combine both the sheets in one.

ok I will add now

Ok done 🎉


NEXT: v.0.1.0-alpha.24

Coverage remained the same at 100.0% when pulling 4ab16441d4d46740528f6a6c10314ea81ed5837c on dev into a504d844ee8617bcd4bae1fcb81161750a5aeff7 on next.


Missing dots if using multiple slides to show

http://codepen.io/ethanclevenger91/pen/xwYERX
You'll notice there are 7 slides, but only 5 dots. If you use the arrows to get to slides 6 or 7, no dot is highlighted. Seems unlikely this is intentional. I'll work on a patch unless you've got something in mind.

Will this be fixed soon?

Yes

Any progress on this?

To anyone it may concern, this issue seems to be fixed on version 1.5.9. Thanks Ken.


Allow styling svg overflow with CSS.

When a chart's svg element is created, its overflow is set to hidden via an inline style here.
This makes customizing the svg's overflow behaviour harder than necessary; Essentially forcing us to either add !important to the style definition or override it with js after the element is created by c3.
Since the current behaviour is a reasonable default I propose making it optional via a config flag. This would allow disabling the inline overflow style like this:
{
  overflow: false
}

I second this :)

Needed

not even adding !important in CSS helps this issue. chart still sets overflow: hidden via javascript randomly.
please fix it fast


unresolved import 'matplotlib.cbook'

Sorry for my bad English. I am new to Python and trying to use matplotlib package but got some problems here. I tried to uninstall and reinstall matplotlib + numpy but nothing changed. Could someone help me to fix it? Thank you so much.

@anhquan075, thanks for letting us know about this.  You have the extension configured to use a specific installation of Python, though there may be several installed on your system.  The problem you've described often means that you installed something into one Python, but are using a different one in the extension.  You can see what the extension is using by clicking on the Python version in the bottom left corner or by opening the "Python" output panel.  Please provide the content of that output panel.  Thanks!

Because we have not heard back with the information we requested, we are closing this issue for now. If you are able to provide the info later on then we will be happy to re-open this issue to pick up where we left off.