Add register (and mute / unmute)

Need to add an optional register. It just needs to display the axis names, not any values. You should be able to mute an axis via the register and it will remove the corresponding axis from the chart. Unmuteing the axis via the register will then return it to the chart.

mute / unmute now working; register still needs to be done

Fixed with 1.0.0 release


Nwajei wagtail

updated blog posts on accessibility and technical writing.
Added ALT text to blog images

Great job @Otakuwind
I enjoyed your Tech trinity blog post.
However, you forgot to make sure your articles are 7 grade or better on Hemingway Editor as per specifications.

Hi @ginandze ,
I'm glad you enjoyed the article. Regarding the grading, I made sure that all my articles achieved a minimum score of 7 on the Hemingway Editor before publishing. I'm not sure why there might be variations in the grades.


Error loading face cascade

I am looking for a little guidance resolving an error trying to run eyeLike. I am new-ish to the opencv world, so I may be missing something very simple. I followed the install directions and did not receive any errors. When attempting to run the eyeLike executable it gives me the following error:
--(!)Error loading face cascade, please change face_cascade_name in source code.
I have reviewed the open issues here and #17 in particular. I tried changing the file path in main.cpp, I tried moving the face_cascade to the same folder (with script updated to reflect that), and I've tried using the full file path with no luck.
I am running opencv 3.3.0 on a raspberry pi 2 running raspbian stretch. Could my issue lie with using opencv3 instead of opencv2?
Any help would be much appreciated!

That did the trick! The issue was that I was making the file path relative to the executable rather than the directory I was running it from. Thanks for the quick feedback and thanks for sharing what you've put together here! I have been looking for a compiled (non-python pygame based) eye tracker that I can pull pupil coords (x,y) to use for ocular reflex testing and research. Thanks again.


bug: Cover Image for courses not showing up on the home page which comes after login

Describe the bug
Cover Image is not showing up on the home page which comes after login.
If I go to the src of that image it says access denied.
To Reproduce
Steps to reproduce the behavior:

Set up the project
Go to the landing page

Expected behavior
Image should show up on landing page
Screenshots or GIFs

Info (please complete the following information):

Browser [Brave]
Version [v1.69.168]

Additional context
The data is seeded in the prisma/seed.ts file - https://github.com/code100x/cms/blob/main/prisma/seed.ts

In my opinion either @hkirat has to fix it from the backend OR
if you want some other image URLs, then please give it to me, I'll add them in the prisma/seed.ts file

It shows access denied when you try to open the image url directly on browser

It's not a bug, the link added in the seed command is not public, you can replace it in your machine if you want.

@Parikshit2001 Hey can you tell me what is the use of prisma/seed.ts file and scripts folder in src folder path src/scripts

@Parikshit2001 Hey can you tell me what is the use of prisma/seed.ts file and scripts folder in src folder path src/scripts

The scripts present in scripts folder is used to automatic deploy your application on server that u will see study in dev ops, if you are member of cohort 3.
The seed file in prisma is to add mockup data in your database using the file, in most of case that performed for testing purpose in dev environment.


Add EDTT tests (BLE controller conformance)

Short version:

Add 2 new test applications: the EDTT controller and GATT test apps
Add the EDTTool to the manifest
Add scripts to automatically run the different sets of provided test (LL, HCI, GAP, GATT)

This PR does NOT run these tests in CI (it just adds the 2 apps to be built)
Long version:
This is the embedded side of the BLE conformance tests which are part of the
EDTT (Embedded Device Test Tool).
Much more info about the tool can be found in https://github.com/EDTTool/EDTT
and in its doc/ folder.
In very short, there is 2 applications in this folder:
1.) A controller only build of the BLE stack, where the HCI, and a few extra
interfaces are exposed to the EDTT.
2.) An application which implements the test GATT services specified by BT SIG
in GATT_Test_Databases.xlsm, with an EDTT interface which allows the EDTT
tests to switch between theses.
The first application is used for LL and HCI conformance tests of the
controller.
The second application for GATT tests.
These 2 particular applications are meant to be used in a simulated environment,
for regression, either as part of a CI system, or in workstation during
development.
This is due to this particular application only containing an EDTT transport
driver for simulated targets, meant to connect to the bsim EDTT transport
driver thru the EDTT bridge.
How to use it
First of all, add to your environment the variable EDTT_PATH poitining to the
EDTT folder. You can do this by adding it to your ~/.bashrc, ~/.zephyrrc,
or similar something like:
export EDTT_PATH=${ZEPHYR_BASE}/../tools/EDTT/

(if you add it to your .bashrc you probably won't be able to refer to
ZEPHYR_BASE)
To run these sets of tests you need to compile both of these applications as any
other Zephyr app, targeting the nrf52_bsim.
To compile both in an automated way you can just use the compile.sh script (see
below).
To run the tests you can either run one of the provided scripts, or run by
hand the BabbleSim 2G4 Phy, EDTT bridge, EDTT and needed simulated devices.
The shortest path is to use the provided scripts.
In short the whole process being:
(Assuming you have already installed BabbleSim and have also set its required environment variable )
cd ${ZEPHYR_BASE} && source zephyr-env.sh
#Compile all apps:
WORK_DIR=${ZEPHYR_BASE}/bsim_bt_out tests/bluetooth/bsim_bt/compile.sh

#run all tests
RESULTS_FILE=${ZEPHYR_BASE}/banana.xml SEARCH_PATH=tests/bluetooth/bsim_bt/edtt_ble_test_app/ tests/bluetooth/bsim_bt/run_parallel.sh

#or just run one set:
tests/bluetooth/bsim_bt/edtt_ble_test_app/tests_scripts/hci.sh

( Related to #21006 )

Note that currently 2 tests are known to fail:

HCI/CCO/BV-07-C [BR/EDR Commands Not Supported on LE Device]
No response to Inquire command
HCI/GEV/BV-01-C [Status return for Unsupported Commands]
No response to Inquire command

How does the EDTT RPC relate to the BTP protocol used by auto-pts: https://github.com/intel/auto-pts/blob/master/doc/btp_spec.txt
Would it not make sense to try to align these, or are the purposes completely different (other than just being host vs controller)?

How does the EDTT RPC relate to the BTP protocol used by auto-pts: https://github.com/intel/auto-pts/blob/master/doc/btp_spec.txt?
Would it not make sense to try to align these, or are the purposes completely different (other than just being host vs controller)?

I am not sure what we would gain by trying to align the formats -- I do not see auto-pts and EDTT evolving into being compatible.

I am not sure what we would gain by trying to align the formats -- I do not see auto-pts and EDTT evolving into being compatible.

I don't see that either. However, both EDTT and BTP are protocols for controlling a Bluetooth implementation for testing/qualification purposes (unless I misunderstood something about EDTT), so I think it's fair to ask whether it would make sense to have these as two distinct protocols rather than standardising on a single one.

I don't see that either. However, both EDTT and BTP are protocols for controlling a Bluetooth implementation for testing/qualification purposes (unless I misunderstood something about EDTT),

I don't see a synergy in doing so either. Note that the EDTT itself really is generic, even if these apps here and the tests in the open repo are for BLE conformance.
Its transport is even more generic: it is just a pipe.
I'd say that trying to align them today would be quite a bit of work and added cross-dependencies but there would seem to be no direct benefit(?).
But if later we see it beneficial we can always change course.


Updates 2022-02

From Adrian: minor bugfix and switch graphics from eps to pdf

I can't get the jupyter-book build to work from within the nox runner yet, seems to be due to nbclient:
# Sphinx version: 4.4.0
# Python version: 3.8.8 (CPython)
# Docutils version: 0.16 release
# Jinja2 version: 2.11.3
# Last messages:
#   reading sources... [ 16%] .nox/build/lib/python3.8/site-packages/jupytext/nbextension/README
#   reading sources... [ 16%] .nox/build/lib/python3.8/site-packages/latexcodec-2.0.1.dist-info/AUTHORS
#   reading sources... [ 17%] .nox/build/lib/python3.8/site-packages/latexcodec-2.0.1.dist-info/LICENSE
#   reading sources... [ 17%] .nox/build/lib/python3.8/site-packages/matplotlib/backends/web_backend/nbagg_uat
#   Executing: .nox/build/lib/python3.8/site-packages/matplotlib/backends/web_backend/nbagg_uat in: /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/matplotlib/backends/web_backend
#   reading sources... [ 18%] .nox/build/lib/python3.8/site-packages/mdit_py_plugins/container/README
#   reading sources... [ 19%] .nox/build/lib/python3.8/site-packages/mdit_py_plugins/deflist/README
#   reading sources... [ 19%] .nox/build/lib/python3.8/site-packages/mdit_py_plugins/texmath/README
#   reading sources... [ 20%] .nox/build/lib/python3.8/site-packages/nbclient/tests/files/Autokill
#   Executing: .nox/build/lib/python3.8/site-packages/nbclient/tests/files/Autokill in: /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/nbclient/tests/files
# Loaded extensions:
#   sphinx.ext.mathjax (4.4.0) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/ext/mathjax.py
#   sphinxcontrib.applehelp (1.0.2) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinxcontrib/applehelp/__init__.py
#   sphinxcontrib.devhelp (1.0.2) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinxcontrib/devhelp/__init__.py
#   sphinxcontrib.htmlhelp (2.0.0) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py
#   sphinxcontrib.serializinghtml (1.1.5) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinxcontrib/serializinghtml/__init__.py
#   sphinxcontrib.qthelp (1.0.3) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinxcontrib/qthelp/__init__.py
#   alabaster (0.7.12) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/alabaster/__init__.py
#   sphinx_togglebutton (0.2.3) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_togglebutton/__init__.py
#   sphinx_copybutton (0.5.0) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_copybutton/__init__.py
#   myst_nb (0.13.1) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/myst_nb/__init__.py
#   jupyter_book (0.12.1) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/jupyter_book/__init__.py
#   sphinx_thebe (0.0.10) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_thebe/__init__.py
#   sphinx_comments (0.0.3) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_comments/__init__.py
#   sphinx_external_toc (0.2.3) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_external_toc/__init__.py
#   sphinx.ext.intersphinx (4.4.0) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/ext/intersphinx.py
#   sphinx_panels (0.6.0) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_panels/__init__.py
#   sphinx_book_theme (unknown version) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_book_theme/__init__.py
#   sphinx_jupyterbook_latex (unknown version) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx_jupyterbook_latex/__init__.py
#   pydata_sphinx_theme (unknown version) from /home/FAC_exploration/.nox/build/lib/python3.8/site-packages/pydata_sphinx_theme/__init__.py
Traceback (most recent call last):
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/nbclient/client.py", line 949, in async_execute_cell
    exec_reply = await self.task_poll_for_reply
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/jupyter_book/sphinx.py", line 167, in build_sphinx
    app.build(force_all, filenames)
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/application.py", line 337, in build
    self.builder.build_update()
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 294, in build_update
    self.build(to_build,
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 308, in build
    updated_docnames = set(self.read())
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 415, in read
    self._read_serial(docnames)
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 436, in _read_serial
    self.read_doc(docname)
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 476, in read_doc
    doctree = read_doc(self.app, self.env, self.env.doc2path(docname))
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/io.py", line 189, in read_doc
    pub.publish()
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/docutils/core.py", line 217, in publish
    self.document = self.reader.read(self.source, self.parser,
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/sphinx/io.py", line 109, in read
    self.parse()
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/docutils/readers/__init__.py", line 77, in parse
    self.parser.parse(self.input, document)
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/myst_nb/parser.py", line 67, in parse
    ntbk = generate_notebook_outputs(
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/myst_nb/execution.py", line 137, in generate_notebook_outputs
    result = single_nb_execution(
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/jupyter_cache/executors/utils.py", line 51, in single_nb_execution
    executenb(
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/nbclient/client.py", line 1204, in execute
    return NotebookClient(nb=nb, resources=resources, km=km, **kwargs).execute()
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/nbclient/util.py", line 84, in wrapped
    return just_run(coro(*args, **kwargs))
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/nbclient/util.py", line 62, in just_run
    return loop.run_until_complete(coro)
  File "/home/FAC_exploration/.nox/build/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/nbclient/client.py", line 663, in async_execute
    await self.async_execute_cell(
  File "/home/FAC_exploration/.nox/build/lib/python3.8/site-packages/nbclient/client.py", line 953, in async_execute_cell
    raise DeadKernelError("Kernel died")
nbclient.exceptions.DeadKernelError: Kernel died


Simplify how default values are set for complex variables types.

As documented in https://developer.hashicorp.com/terraform/language/expressions/type-constraints#optional-object-type-attributes
"Terraform applies the default value you specify in the optional modifier first and then later applies any nested default values to that attribute"
which means that the values specified in "optional" constraints was always overridden immediately by the defaults specified below.
This change simplifies how the defaults are set, solely using the optional defaults.

/gcbrun

@roberthbailey Is this PR still active? Can you resolve conflicts if so?

I had forgotten about this PR. At this point I'm going to close it and I will re-open a new one if this bothers me again in the future.


Signed div by max issue111

Fix #111 via better signed/unsigned logic in div

Thank you @ckormanyos

Thank you

Thanks for reporting this hard-to-find bug @vaivaswatha. Please feel free to stop by any time with further reports or if anything else is found...


Filter on reload

On page reload, tables still get filtered but the search field is shown as empty.
Example:
Table filtered for "Acrobat"

After reloading the page, the filter is still applied but the search field is empty

Placing the cursor in the search field and hitting "backspace" clears the invisible filter

Thanks for reporting. It seems to be a bug in DataTables. I'll investigate whether this can be addressed with some JS to clear this, if not I'll try to open bug report in DataTables.

Hrmms, how are you using it?
Import-Module .\PSWriteHTML.psd1 -Force
Import-Module PSSharedGoods -Force

if ($null -eq $Process) {
    $Process = Get-Process | Select-Object -First 70
}

New-HTML -TitleText 'My title' -UseCssLinks:$true -UseJavaScriptLinks:$true -FilePath $PSScriptRoot\Example19.html -Verbose {
    New-HTMLContent -HeaderText 'Test1' {
        New-HTMLTable -DataTable $Process -PagingOptions @(50, 100, 150, 200) -Filtering -FilteringLocation Top {
            New-HTMLTableCondition -Name 'HandleCount' -Type number -Operator gt -Value 300 -BackgroundColor Yellow
            New-HTMLTableCondition -Name 'ID' -Type number -Operator gt -Value 16000 -BackgroundColor Green
            New-HTMLTableCondition -Name 'Name' -Type string -Operator eq -Value 'browser_broker' -BackgroundColor Gold -Row
        }
    }
} -ShowHTML

Can't reproduce it? I type anything in filters, press F5 and it simply reloads.

Ok, I see in Edge Chromium this is what you describe. I'm using Chrome 75 and no such thing happens.

I'm using chrome 73

I have HTMLTabs in there, may be that's the issue?

Here is a gist. I am to stupid to format PS code in the coments
https://gist.github.com/kort3x/3fb8f260cfc6f7f2bacb43b65b3a38ec

Nah, you can format code in comment by using 3 x at the begining and 3 x at the end. https://help.github.com/en/articles/creating-and-highlighting-code-blocks

3x youmean;)

Yes!

New-HTML -TitleText 'Software' -UseCssLinks:$true -UseJavaScriptLinks:$true -FilePath C:\inetpub\wwwroot\reports\software\softwareoverview\softwareoverview.html {
  New-HTMLTab -TabName 'Licensed Software'  {
      New-HTMLContent {
          New-HTMLTable -DataTable ($licensedSoftware | Select-Object Name,Version,Publisher,Computername,InstallDate,Collected) -PagingOptions @(100, 200) -Filtering -FilteringLocation Top
      }
  }
  New-HTMLTab -TabName 'Freeware'  {
      New-HTMLContent {
          New-HTMLTable -DataTable ($freeSoftware  | Select-Object Name,Version,Publisher,Computername,InstallDate,Collected) -PagingOptions @(100, 200) -Filtering -FilteringLocation Top
      }
  }
} ```

ah, that's better

It seems I've fixed this error - at least I think so. Will be in next release. Feel free to reopen when needed.

looking good - thanks!

Hi, i see a very similar thing, (using 0.0.132 ver)
When i use the '''New-HTMLTable''' '''-Filtering''' option, if you use any of those "per column" filters, upon page reload it will still be filtered until you touch that filter field ,do space and delete or similar.
Since this one seems to be marked as closed, shall i start a new thread for this?


Does not handle error in portfinder.getPort() callback

Now communicates with stdout/stdin, so there is no longer a socket.


Font issue in xmonad

In the screenshot above the workspaces are displayed on the left of polybar. They should display as " ● " for ppCurrent, " ○ " for ppHidden and ppHiddenNoWindows, and as a red " ● " for ppUrgent. It all works as expected in xmobar but I really like the thought of having my tray and bar all in one go, and the ability to specify x/y positions (since I haven't been able to figure it out quite right with trayer). The issue is that for the active workspace instead of the filled in dot, it shows "342227217" and for hidden workspaces it shows "342227213". I've tried a few different fonts including Source Code Pro, Droid Sans Mono, and Droid Sans Fallback. Currently have
font-0 = "Droid Sans Fallback:pixelsize=11;0" font-1 = FontAwesome:size=8;-1
in my polybar config for fonts
myLogHook h = h         {             logHook = (logHook h) >> (dynamicLogString pp >>=xmonadPropLog)         } where         pp = def             {                 ppCurrent =		\s -> " ● "               , ppHidden =		\s -> " ○ "               , ppHiddenNoWindows =	\s -> " ○ "               , ppUrgent =		wrap "%{u#FF0000 +u" "%{-u}" . \s -> " ● "               , ppOrder =		\(ws:_:_:_) -> [ws]             }
is my xmonad hook for initiating workspaces in polybar.
I don't really know much about fonts or how the programs are interacting so it may not be possible to do this currently but a chance for some insight is better than nothing.

This is definitely not a font issue, those numbers seem to be the values of the binary representation of the font icons. Somehow either xmonad sends those characters in a way that polybar interprets as a string of digits or polybar reads this wrong.
Are you using the xworkspaces module for this?

I think I know the issue, and I don't think it is related to polybar. The number "342227213" you see there is the unicode for your "ppHidden" icon if you took the binary representation of the unicode, split it up into three equal parts, converted said parts into octal, and concatentated the resulting numbers.
The reason for this seemingly random behavior is that the unicode representation of that character requires 3 bytes, and Strings are fundamentally a list of one-byte Chars. When you use dynamicLogString and xmonadPropLog, you are implicitly encoding the given string into a number in UTF-8 and then converting the resulting number back into a list of one-byte Chars (via a call to encodeString in Codec.Binary.UTF8.String), which, when displayed, displays their respective values in octal form, concatenated together.
Although I haven't personally tested it, I believe this can be solved using Data.Text instead of String. It is a data type designed to pack character bytes together so that, for example, it will know if the string is encoded in UTF-8 and can read it accordingly. putStr from the Data.Text.IO module can output correct UTF-8 strings to standard output, and there is additionally a wealth of other utilities and functions to accomplish just about anything you could want probably.
You can also accomplish most of what you want by just using polybar modules with no log hook, though there is no support for urgent/occupied workspaces as of yet. I use this method for my XMonad configuration, and it's pretty simple. All you need is the EwmhDesktops module from xmonad-contrib. Though I will say that looking into all this has me thinking I might look into writing my own custom log hook for polybar as well.

@MxLinux how did you get polybar to work with xmonad? can i see your hs file?

@MxLinux could you share your polybar and xmonad-configs somewhere? This sounds like something that can be turned into a wiki-page here to helps other (well, me, for starters), to integrate polybar and xmonad. The current integration "with any EWMH-compatible" WM is a start, but I feel like there is room for improvement.


Rename GitHon to HonKit

Acording to #48, Git is trandmark

About - Git

So, we need to rename GitHon project.
We have decided to rename GItHon to HonKit.
Todo

[x] GitHub Organization
[x] Netlify https://honkit.netlify.app/
[ ] Source Code & package.json
[ ] Documents
[ ] npm

deperecated old name

[ ] Blog

User Affects
Probably, https://github.com/githon/ is 404.

npm package is still aliave

OK. Test and https://githon.netlify.app/ is live.
Start to migrate GitHon → HonKit (honkit).

[x] https://github.com/HonKit

[x] https://github.com/HonKit/HonKit

[x] Get new home! https://honkit.netlify.app/

transfer-github-owner --from githon --to honkit
./node_modules/.bin/lerna exec -- transfer-github-owner --from githon --to honkit

https://github.com/azu/transfer-github-owner

Get new npm org https://www.npmjs.com/~honkit

Source Code & package.json

PR #53

I've tried to release new name honkit for testing.

Successfully published:

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

repost https://efcl.info/2020/06/19/githon/

We have get new Project name: HonKit 🎉
Thanks to people on GitHub/Twitter.


About calculation of loss function

Hi, I have some questions about this loss function because there are some differences between the paper and the code.
First of all, the paper:

The loss is the sum of the average logsoftmax between the query point and other prototypes and the average distance between the query point and the corresponding prototypes.
But in the code:
       log_p_y = F.log_softmax(-dists, dim=1).view(n_class, n_query, -1)
       loss_val = -log_p_y.gather(2, target_inds).squeeze().view(-1).mean()

The loss in code is only the sum of LogSoftmax  between the query point and the corresponding prototypes.
I'm confused. Is it my understanding of the code or my understanding of the paper?

I had the same confusion when replicated the paper's results.
You could basically run cross-entropy and results will be the same.
In this formula, he uses log_softmax on distances, then take only the right ones with gather function and compute mean on that.
So it is basically the same.
I did similarly in my own implementation:
https://github.com/fabian57fabian/prototypical-networks-few-shot-learning


On Mac, Zip File is Corrupted

I tried clicking on the "Generate Config" button, but when I tried to expand the Zip file, an error shows up on the screen.

This is probably because of it being corrupted. Or it might just not be meant for Mac players. Who knows.

Download WinZip and open cfg folder and save to mac, i think the custom folder is f*%&ing it up

An easy google search would have helped:
https://www.tourvista.com/blog/2012/05/for-mac-users-only-how-to-unzip-a-file-fixing-mac-error-1-operation-not-permitted/
There you go.


Update maintainer-list.nix

add thefenriswolf, maintainer of tensorman

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Notify maintainers
cc @

Maybe just merge this commit into https://github.com/NixOS/nixpkgs/pull/73452 and close this PR.

Maybe just merge this commit (as a separate commit!) into #73452 and close this PR.

I don't get what I am supposed to do! Should this be a separate PR or not?
Please just ELI5 I'm lost

Not a separate PR, but put a separate commit into #73452 (so this will contain two commits: one new package, one new maintainer)


Add initial migration for orders in the test app

Currently there are no migrations included. That's why running python manage.py migrate doesn't create any table for orders app. And that results in runserver failing to load the page the first time.

Coverage decreased (-0.02%) to 58.813% when pulling 380d18146ed24d62aee2513a7e8a6a0e8287b50f on sunu:master into 00a14383edc3dcf7ca5dd583a7568e0b1e305151 on cypreess:master.


Testing 'Search in Open Editors': error when settings.json or keybindings.json open

@JacksonKearl
Ref #20530
Steps to Reproduce:

Have settings.json or keybindings.json open.  Non-configuration json files are no problem.
Search in Open Editors errors - see error message in demo

Does this issue occur when all extensions are disabled?: Yes/No
Version: 1.53.0-insider (user setup)
Commit: ed72c64b87ede96fb51bc16870f9d2ecbf4fcc57
Date: 2021-01-22T17:18:22.679Z
Electron: 11.2.0
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.21292

Thanks, again only can repro on Windows. Less clear why that might be the case this time.

Thanks, again only can repro on Windows. Less clear why that might be the case this time.

Error should be gone now, but results wont be found in user data files on windows yet.

Error should be gone now, but results wont be found in user data files on windows yet.


Possible to restore WSL from disk file(vhdx)?

Is your feature request related to a problem? Please describe.
I reinstalled Windows and the system disk is wiped so the wsl entries are gone, but the WSL disk file(.vhdx) is located in another disk and unaffected. I couldn't find a way to restore it.
Describe the solution you'd like
A command to restore it? Or maybe wsl --import can already do this?
Describe alternatives you've considered
N/A
Additional context
N/A

/dupe #4849 ➡ #4762. Could also start a discussion for work-arounds.


Fix compute_custody_bit problem

There is a bug in compute_custody_bit: it tries to add int to a list (enumerate result).
Here is a snippet, illustrating the problem:
from eth2spec.phase1 import spec

sig = spec.BLSSignature(spec.bls.Sign(1,spec.compute_signing_root(spec.BeaconBlock(), spec.compute_domain(spec.DOMAIN_BEACON_PROPOSER))))
spec.compute_custody_bit(sig, b'1111')

Output:
Traceback (most recent call last):
  File "tests/core/pyspec/testcase2.py", line 4, in <module>
    spec.compute_custody_bit(sig, b'1111')
  File "/mnt/c/Users/ericsson/IdeaProjects/eth2.0-specs/tests/core/pyspec/eth2spec/phase1/spec.py", line 1814, in compute_custody_bit
    a = sum(s[i % 2]**i * int.from_bytes(atom, "little") for i, atom in enumerate(custody_atoms) + s[n % 2]**n)
TypeError: unsupported operand type(s) for +: 'enumerate' and 'int'

The PR contains a suggest fix of the problem.

This was addressed in #1705.

Thanks @ericsson49! closing in favor of #1705


Create labelled spaces and move windows on startup

Is there any way to create labelled spaces and move windows to those spaces on startup?
I have a multiple monitor setup and would like to be able to log in and have my apps all open in the correct spaces on the correct monitors.
Currently, I have this in my config file:
yabai -m space --create
yabai -m space 1 --label main
yabai -m space --create
yabai -m space 2 --label code
yabai -m space --create
yabai -m space 3 --label term
yabai -m space --create
yabai -m space 4 --label chat

yabai -m space main --display 1
yabai -m space chat --display 2
yabai -m space code --display 3
yabai -m space term --display 3

yabai -m rule --add app=iTerm space=term
yabai -m rule --add app=Code space=code
yabai -m rule --add app=Safari space=main
yabai -m rule --add app=Firefox space=main
yabai -m rule --add app="News Explorer" space=news
yabai -m rule --add app=Discord space=chat
yabai -m rule --add app=Franz space=chat
yabai -m rule --add app=Ferdi space=chat

I then have another script that runs on space change to close unfocused spaces without windows, which doesn't really do what I want:
#! /usr/bin/env zsh

yabai -m query --spaces --display | jq -re 'map(select(."native-fullscreen" == 0)) | length > 1' && zsh <(yabai -m query --spaces | jq -re 'map(select(."windows" == [] and ."focused" == 0 and ."label" == "" )) | .[]| "yabai -m space \(.index|@sh) --destroy"')

The goal is to create specific spaces on specific monitors and move applications to those spaces.

Sorry, I don't have an answer to your question (though I'm curious, how do you first ensure there aren't any spaces?) but just installed Ferdi based on your config. Thanks for that!

@johnallen3d That's half the problem... I'm not really sure how to ensure there are no spaces (or label the spaces that are there), which is a bit painful because a bunch of spaces get made and then labelled and moved, and then any extra are removed by the script.
Ferdi is pretty awesome, it's the free version of Franz.

I was able to (seemingly) get this working by doing the following:
python3 ./.config/yabai/yabaictl.py update-spaces

yabai -m space 1 --label main
yabai -m space 2 --label code
yabai -m space 3 --label term
yabai -m space 4 --label chat
yabai -m space 5 --label spotify

yabai -m space main --display 1
yabai -m space chat --display 2
yabai -m space code --display 3
yabai -m space term --display 3
yabai -m space term --move next
yabai -m space spotify --display 3
yabai -m space spotify --move next
yabai -m space spotify --move next

It's not ideal but seems to work decently. Moving the spaces using next is clunky though. Probably a better way to go about that.

@Just-Insane could you share the contents of yabaictl.py?

@whitepaperclip sure, it's here:
#!/usr/local/bin/python3
import json
import subprocess

import click

# these are used to determine display order
setups = {
    "home": [
        "9D6F6199-E480-45B6-B5B5-F6C1D3C40171",
        "F4300722-B985-E97A-DAC9-BC8415D223C6",
        "D8BFD1B0-C53A-5A22-141F-5F889FB85E01",
    ],
    "laptop": [
        "731FF600-A54A-B317-CF0B-C767EC3D5EB2",
    ],
}

ignore_messages = [
    "acting space is already located on the given display.",
    "cannot focus an already focused space.",
]
# TODO: need to handle following errors:
"acting space is the last user-space on the source display and cannot be destroyed."
"acting space is the last user-space on the source display and cannot be moved."

def yabai_message(*msg):
    ret = subprocess.run(["yabai", "-m", *msg], capture_output=True)

    if ret.returncode:
        err_msg = ret.stderr.decode()

        if err_msg.strip() not in ignore_messages:
            raise Exception(err_msg)
        else:
            print(f"While running {msg} we received error: {err_msg}")

    return ret.stdout.decode()

def yabai_query(domain):
    return json.loads(yabai_message("query", "--{}".format(domain)))

class WindowManager:
    spaces = []
    displays = []
    display_order = []
    NUM_SPACES = 10

    def __init__(self):
        self.refresh_state()

    @property
    def num_displays(self):
        return len(self.displays)

    @property
    def num_spaces(self):
        return len(self.spaces)

    @property
    def unlabled_spaces(self):
        return [space for space in self.spaces if space["label"] == ""]

    @property
    def visible_spaces(self):
        return [space for space in self.spaces if space["visible"] > 0]

    def refresh_state(self):
        self.spaces = yabai_query("spaces")
        self.displays = yabai_query("displays")

        for setup in setups.values():
            if set([display["uuid"] for display in self.displays]) == set(setup):
                self.display_order = setup
        if self.display_order == []:
            print("unidentified setup")

    def find_display_index(self, display):
        uuid = self.display_order[display]

        return next(
            display["index"] for display in self.displays if display["uuid"] == uuid
        )

    def find_space_index(self, space):
        return next(
            space["index"] for space in self.spaces if space["label"] == f"s{space}"
        )

    def get_display_for_space(self, space):
        return space % self.num_displays - 1

    def focus_space(self, space):
        yabai_message("space", "--focus", f"s{space}")

    def move_space_to_display(self, space, display):
        display_index = self.find_display_index(display)

        yabai_message(
            "space", f"s{space}", "--display", f"{display_index}",
        )

    def remove_unnecessary_spaces(self):
        if self.num_spaces > self.NUM_SPACES:
            for unlabled_space in self.unlabled_spaces:
                yabai_message("space", f"{unlabled_space['index']}", "--destroy")

    def ensure_spaces(self):
        if self.num_spaces < self.NUM_SPACES:
            for i in range(self.num_spaces, self.NUM_SPACES):
                yabai_message("space", "--create")

    def ensure_labels(self):
        wanted_labels = set(f"s{i}" for i in range(1, self.NUM_SPACES + 1))
        existing_labels = set(space["label"] for space in self.spaces)

        for ix, missing_label in enumerate(sorted(wanted_labels - existing_labels)):
            yabai_message(
                "space",
                f"{self.unlabled_spaces[ix]['index']}",
                "--label",
                missing_label,
            )

    def reorganize_spaces(self):
        focused_spaces = self.visible_spaces

        for space_index in range(1, self.NUM_SPACES + 1):
            self.move_space_to_display(
                space_index, self.get_display_for_space(space_index),
            )

        for space in focused_spaces[: min(self.num_displays, len(focused_spaces))]:
            self.focus_space(space["label"].strip("s"))

    def update_spaces(self):
        self.ensure_spaces()
        self.refresh_state()

        self.ensure_labels()
        self.refresh_state()

        self.reorganize_spaces()

        self.remove_unnecessary_spaces()
        self.refresh_state()

@click.group()
@click.pass_context
def cli(ctx):
    # ensure that ctx.obj exists and is a dict (in case `cli()` is called
    # by means other than the `if` block below
    ctx.ensure_object(dict)

    ctx.obj["wm"] = WindowManager()

@cli.command()
@click.pass_context
def update_spaces(ctx):
    ctx.obj["wm"].update_spaces()

@cli.command()
@click.argument("space")
@click.pass_context
def focus_space(ctx, space):
    ctx.obj["wm"].focus_space(space)

if __name__ == "__main__":
    cli(obj={})%

It doesn't really work for my use cases due to how it checks for unused spaces and removes them, and how it sends spaces to specific monitors (balanced).

Awesome, thanks!

On Jun 11, 2020, at 11:44 AM, Justin Gauthier<EMAIL_ADDRESS>wrote:
@whitepaperclip https://github.com/whitepaperclip sure, it's here:
#!/usr/local/bin/python3
import json
import subprocess
import click
these are used to determine display order
setups = {
"home": [
"9D6F6199-E480-45B6-B5B5-F6C1D3C40171",
"F4300722-B985-E97A-DAC9-BC8415D223C6",
"D8BFD1B0-C53A-5A22-141F-5F889FB85E01",
],
"laptop": [
"731FF600-A54A-B317-CF0B-C767EC3D5EB2",
],
}
ignore_messages = [
"acting space is already located on the given display.",
"cannot focus an already focused space.",
]
TODO: need to handle following errors:
"acting space is the last user-space on the source display and cannot be destroyed."
"acting space is the last user-space on the source display and cannot be moved."
def yabai_message(*msg):
ret = subprocess.run(["yabai", "-m", *msg], capture_output=True)
if ret.returncode:
    err_msg = ret.stderr.decode()

    if err_msg.strip() not in ignore_messages:
        raise Exception(err_msg)
    else:
        print(f"While running {msg} we received error: {err_msg}")

return ret.stdout.decode()

def yabai_query(domain):
return json.loads(yabai_message("query", "--{}".format(domain)))
class WindowManager:
spaces = []
displays = []
display_order = []
NUM_SPACES = 10
def __init__(self):
    self.refresh_state()

@property
def num_displays(self):
    return len(self.displays)

@property
def num_spaces(self):
    return len(self.spaces)

@property
def unlabled_spaces(self):
    return [space for space in self.spaces if space["label"] == ""]

@property
def visible_spaces(self):
    return [space for space in self.spaces if space["visible"] > 0]

def refresh_state(self):
    self.spaces = yabai_query("spaces")
    self.displays = yabai_query("displays")

    for setup in setups.values():
        if set([display["uuid"] for display in self.displays]) == set(setup):
            self.display_order = setup
    if self.display_order == []:
        print("unidentified setup")

def find_display_index(self, display):
    uuid = self.display_order[display]

    return next(
        display["index"] for display in self.displays if display["uuid"] == uuid
    )

def find_space_index(self, space):
    return next(
        space["index"] for space in self.spaces if space["label"] == f"s{space}"
    )

def get_display_for_space(self, space):
    return space % self.num_displays - 1

def focus_space(self, space):
    yabai_message("space", "--focus", f"s{space}")

def move_space_to_display(self, space, display):
    display_index = self.find_display_index(display)

    yabai_message(
        "space", f"s{space}", "--display", f"{display_index}",
    )

def remove_unnecessary_spaces(self):
    if self.num_spaces > self.NUM_SPACES:
        for unlabled_space in self.unlabled_spaces:
            yabai_message("space", f"{unlabled_space['index']}", "--destroy")

def ensure_spaces(self):
    if self.num_spaces < self.NUM_SPACES:
        for i in range(self.num_spaces, self.NUM_SPACES):
            yabai_message("space", "--create")

def ensure_labels(self):
    wanted_labels = set(f"s{i}" for i in range(1, self.NUM_SPACES + 1))
    existing_labels = set(space["label"] for space in self.spaces)

    for ix, missing_label in enumerate(sorted(wanted_labels - existing_labels)):
        yabai_message(
            "space",
            f"{self.unlabled_spaces[ix]['index']}",
            "--label",
            missing_label,
        )

def reorganize_spaces(self):
    focused_spaces = self.visible_spaces

    for space_index in range(1, self.NUM_SPACES + 1):
        self.move_space_to_display(
            space_index, self.get_display_for_space(space_index),
        )

    for space in focused_spaces[: min(self.num_displays, len(focused_spaces))]:
        self.focus_space(space["label"].strip("s"))

def update_spaces(self):
    self.ensure_spaces()
    self.refresh_state()

    self.ensure_labels()
    self.refresh_state()

    self.reorganize_spaces()

    self.remove_unnecessary_spaces()
    self.refresh_state()

@click.group()
@click.pass_context
def cli(ctx):
# ensure that ctx.obj exists and is a dict (in case cli() is called
# by means other than the if block below
ctx.ensure_object(dict)
ctx.obj["wm"] = WindowManager()

@cli.command()
@click.pass_context
def update_spaces(ctx):
ctx.obj["wm"].update_spaces()
@cli.command()
@click.argument("space")
@click.pass_context
def focus_space(ctx, space):
ctx.obj["wm"].focus_space(space)
if name == "main":
cli(obj={})%
It doesn't really work for my use cases due to how it checks for unused spaces and removes them, and how it sends spaces to specific monitors (balanced).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/koekeishiya/yabai/issues/541#issuecomment-642801327, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAE5EKM6NLBYFSL56YHLY3RWECYJANCNFSM4NMUYNVA.


Wrong location of images

The images bad_guy.png, enemy2.png & good_girl.png are accessed by "Pictures/.png", when they are actually located in the "pictures" directory. Hence, these images are not visible. Can I make a change to move the images to the correct location so that they are visible?

@nealkarpe Solved the problem!


fix: return new object on commit transformation

I ran the changes against both an Kratos and Hydra where they work as expected, without any unexpected changes to the changelog's structure.

What does this fix/address?

This https://github.com/ory/kratos/actions/runs/9773658158/job/26982181201


Refactor property, avoid duplicate

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 68.83117% with 24 lines in your changes missing coverage. Please review.

Project coverage is 81.22%. Comparing base (676d177) to head (d46396d).

Files with missing lines
Patch %
Lines

node_graph/properties/builtins.py
70.17%
17 Missing :warning:

node_graph/property.py
65.00%
7 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #17      +/-   ##
==========================================
+ Coverage   81.19%   81.22%   +0.02%
==========================================
  Files          27       27
  Lines        1718     1678      -40
==========================================
- Hits         1395     1363      -32
+ Misses        323      315       -8

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


System Tray Icon is removed properly on exit

I noticed when restarting Workspacer or quitting through the right click function on the System Tray icon, that the icon wasn't properly being disposed as you can see by this image.

Looking through the code, this function was implemented in SystemTrayManager but just wasn't being called on quit.
Additionally, if Workspacer is killed via task manager or pressing stop whilst debugging, the Icon remains. However testing this with other tray utilising programs (keepassxc and VLC I tested) the same thing happened with them.

LGTM!

Thanks for the patch. Consider it merged!

nice catch


Is there any way for me to get the offline release package?

Is your feature request related to a problem? Please describe.
Is there any way for me to get the offline release package? It seems to me that I have a lot of difficulty getting dependencies through the build script, and it fails almost every time.
Describe the solution you'd like
Maybe a distribution package like cocos2dx can help me.

You can just run git clean -d -fx in axmol root to cleanup cache stubs, rerun cmake generate will resolve your issue

will include offline pakge in final release: https://github.com/axmolengine/axmol/commit/fa08bc89bbbcf6a3fad888ba8badb9629aad899c


Promises

This pull request completes the promise functionality. Closes #54.

Oof. I noticed that these must be deferred until there is no code on the stack. Updating this to a WIP.

This now conforms to the specification, ready for review.

Hi,
thank you very much for the PR! I'm looking forward to have Promises fully implemented in Jurassic, so I no longer need to use a polyfill for that functionality in our application.
I have skimmed through the PR, and added some comments. Overall, I think the PR looks good.
Thank you!

@kpreisser Thanks for the feedback! I went ahead and made sure that the implementation matches the Promises/A+ spec, so it now works alongside polyfilled promises.

Thanks for this. I made a few minor changes (removed the EventLoop class, made ExecutePendingCallbacks internal, etc) but otherwise I merged in it's entirety.

Hi @paulbartrum,

made ExecutePendingCallbacks internal

note that this method is currently only called from GlobalMethodGenerator.Execute() and EvalMethodGenerator.Execute(). However, e.g. if the script has registered some callbacks (FunctionInstance) which I want to call later, I would call FunctionInstance.CallLateBound(), but that does not execute the pending callbacks that the script registered some during execution of that function.
Therefore, I would need to call ExecutePendingCallbacks() manually after calling the FunctionInstance, so that method would need to be public.
(The other option I could imagine would be do do this directly in the FunctionInstance, but as you mentioned in #54, this is called a lot and could decrease performance.)
Thanks!

note that this method is currently only called from GlobalMethodGenerator.Execute() and EvalMethodGenerator.Execute(). However, e.g. if the script has registered some callbacks (FunctionInstance) which I want to call later (after Execute() returned), I would call FunctionInstance.CallLateBound(), but that does not execute the pending callbacks which the script registered during execution of that function.

Not sure I understand this. If ScriptEngine.Execute() has been called then the pending callbacks list is empty. If you need to call a function and also execute all pending callbacks, then just use Execute or Compile.

I made AddPendingCallback internal for now. I would rather people use the (stable, documented) promise APIs rather than interface with the engine directly.

Hi @paulbartrum

Not sure I understand this. If ScriptEngine.Execute() has been called then the pending callbacks list is empty. If you need to call a function and also execute all pending callbacks, then just use Execute or Compile.

Sorry, I'm not sure if I follow here. How would I call a FunctionInstance using ScriptEngine.Execute() or Evaluate()?
For example, let's assume I want to write a script host providing a global setTimeout() function, where a script can register a callback to be executed later (and when it is called, some counter value is passed as argument to that callback).
I can implement that function as follows:
    var engine = new ScriptEngine();
    engine.ForceStrictMode = true;
    engine.SetGlobalValue("console", new FirebugConsole(engine));

    object scriptSyncRoot = new object();

    int counter = 0;
    engine.SetGlobalFunction("setTimeout", new Action<FunctionInstance, int>((handler, timeout) =>
    {
        Task.Delay(timeout).ContinueWith(result =>
        {
            lock (scriptSyncRoot)
            {
                counter++;
                handler.CallLateBound(engine.Global, counter);
                // TODO: Need to call engine.ExecutePendingCallbacks() here...
            }
        }, TaskContinuationOptions.ExecuteSynchronously);
    }));

Now, assume I want to write a script that uses the setTimeout() to implement a Promise-based delayAsync() method (similar to Task.Delay() in .NET). With async functions (ECMAScript 2017), I could write the JavaScript code like this (which can then be downlevel-compiled to ECMAScript 5 e.g. by TypeScript):
function delayAsync(timeout) {
    return new Promise(resolve => setTimeout(resolve, timeout));
}

(async function () {
    for (let i = 0; i < 10; i++) {
        // Wait 1 second.
        let delayCounter = await delayAsync(1000);
        // Print the counter value.
        console.log('DelayCounter: ' + delayCounter);
    }
})();

I can then execute the equivalent ES5 code (similar to the one in the following string literal) with Jurassic:
    lock (scriptSyncRoot)
    {
        engine.Execute(@"

function delayAsync(timeout) {
    return new Promise(function(resolve) {
        setTimeout(resolve, timeout);
    });
}

(function () {
    var i = 0;
    function loop() {
        if (i < 10) {
            // Wait 1 second.
            delayAsync(1000).then(function (delayCounter) {
                // Print the counter value.
                console.log('DelayCounter: ' + delayCounter);
                i++;

                loop();
            });
        }
    }
    loop();
})();

");
    }

However, when I run that, nothing happens, because the pending callbacks are not executed after the call to the supplied FunctionInstance returns.
To fix this, I would need to call engine.ExecutePendingCallbacks() at the place marked by the comment. After that change, you can see that numbers 1 to 10 are printed to the console (with a delay of 1 second).
Is there another way to do this without having to make ExecutePendingCallbacks() public?
Thank you!

This should work: engine.Execute("") :-)

Your event loop code could look something like this:
var engine = new ScriptEngine();
engine.ForceStrictMode = true;
engine.SetGlobalValue("console", new FirebugConsole(engine));

int someValue = 0;
engine.SetGlobalFunction("setTimeout", new Action<FunctionInstance, int>((handler, timeout) =>
{
    Task.Delay(timeout).ContinueWith(_ =>
    {
        taskQueue.Add(() =>
        {
            someValue++;
            handler.CallLateBound(engine.Global, someValue);
            engine.Execute("");
        });
    });
}));

taskQueue.Add(() =>
{
    engine.Execute("// script goes here");
});

Task.Run(() =>
{
    foreach (var task in taskQueue.GetConsumingEnumerable())
    {
        task();
    }
});

I committed a change to make this pattern (Execute("")) more efficient (f6de4691011d738b0e529ac357aad5170f5df4e0).

Hi @paulbartrum,

This should work: engine.Execute("") :-)

You're right, that works, though it still looks a bit like a work-around (though with your latest change it at least doesn't compile and execute that empty code any more).
I could also imagine to have a Execute(params ScriptSource[] sources) method, that is defined to run all the sources, and then do the "post-processing" which currently means executing pending callbacks. I could then just call Execute() with no parameters after FunctionInstance.CallLateBound().
(I see that you protected execution of ExecutePendingCallbacks() to do nothing if it is already being called. Maybe we should move that wrapping code into Execute() and Evaluate, because otherwise it can also happen that I call a FunctionInstance, which might callback a CLR method that also calls Execute(). This would ensure that ExecutePendingCallbacks() is only called if the outermost ScriptEngine.Execute() is about to return.)
Thanks!

This is not really general enough unfortunately. There's plenty of ways to execute code other than by calling a function directly (for example, you could call ArrayInstance.Every with a callback).
I could do something like:
engine.Execute(() => handler.CallLateBound(engine.Global, someValue))

But I think what we have is fine for now.
By the way, the reason why I'm trying to avoid exposing functionality related to pending callbacks list is because I think there's a reasonable chance I will have to build full event loop support at some point, and anything I build now is likely not going to work in the general case. For details on how pending callbacks (officially called a "microtask queue") are related to event loops, see here: https://javascript.info/microtask-queue

You could make the script parameter for Execute optional (or add an overload) so it becomes the slightly less hacky looking: engine.Execute().


make clean exlodes with "unexpected operator"

$ make clean
env GOGC=off go clean ./...
# build-external was accidentially created as owned by root in earlier versions. This is fixed now,
# but we need to fix up old checkouts, since git doesn't track ownership.
if [ "$(stat -c %%U client/build-external)" == "root" ]; then sudo chown "$USER:$USER" client/build-external; fi
/bin/sh: 1: [: %U: unexpected operator
# Don't actually rmi the build images - rm'ing the .uptodate files is enough to ensure
# we rebuild the images, and rmi'ing the images causes us to have to redownload a lot of stuff.
#  docker rmi weaveworks/scope-ui-build weaveworks/scope-backend-build >/dev/null 2>&1 || true
rm -rf scope.tar .scope_ui_build.uptodate .scope_backend_build.uptodate \
	prog/scope vendor/runsvinit/runsvinit prog/staticui/staticui.go prog/externalui/externalui.go client/build/*.js client/build-external/*.js docker/weave .pkg \
	report/report.codecgen.go render/detailed/detailed.codecgen.go vendor/github.com/ugorji/go/codec/codecgen/bin

This was introduced in #2153.
There are other things wrong here - note that the comments are printed out; that's because they are indented in the Makefile.

huh, this worked on my machine. sh vs bash in some weird condition?

Probably. It certainly was a long way from posix shell. == for comparison, for starters.


Add options to retile an image.

The tile iterator can now take tile_size and tile_overlap parameters.  If tile size is not the original tile size, the image is retiled, which involves loading individual tiles and compositing them together as needed to produce the new time.  tile_size can take a width, height, or both.  tile_overlap can take x and y parameters which will retile the image to include that much overlap in each direction.  Overlap never extends outside of the requested region.
Resolves issue #126.

@cdeepakroy When you get a chance, can you review this and ask for changes as needed?  Thanks.

@cdeepakroy, @cooperlab  Overlap now is the total overlap, not the per-side overlap.

LGTM!


Adds deploy target for automating install of the aws-account-operator

This change adds a deploy target to the Makefile, to automate the install
of the aws-account-operator pieces required for operation.
make deploy will create the operator secret, deploy the CRDs, and create an accountPool with zero size.  It's also idempotent, so it can be run multiple times with no issue and will just replace the resources that differ from what it expects (in case you create a bad secret, or whatnot).
REF: https://issues.redhat.com/browse/OSD-3077
Signed-off-by: Christopher Collins<EMAIL_ADDRESS>

I ended up having to delete my CRC cluster locally and rebuild a new one.  Used this to start up a new AWS Account Operator to be able to test.  :100: would bootstrap this way again.

Can you update the README to reflect how to bootstrap this?

@iamkirkbater: README.md updated with bootstrap documentation

@clcollins could you please remove from the PR the changes that are not related to automating the local deployment of the operator? e.g. extra documentation and Makefile changes.

/lgtm
/approve


belongs_to requires presence by default in Rails 5

Rails 5 automatically adds a presence validation on belongs_to associations:

https://github.com/rails/rails/issues/18233
http://edgeapi.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

This change prevents from creating users outside the invitation workflow.

Thanks


Unable to pass options

Is there something wrong with this code:
.pipe($.sass({
    outFile: 'styles.css'
})

I can't see gulp-sass to do anything when passing options. In the documentation you say

Pass in options just like you would for node-sass; they will be passed along just as if you were using node-sass.

This is not how gulp works. The input will be piped into sass and the output needs to be piped some where. If you want to write to disk you need to pipe to dest.

I know that you should pipe to somewhere... I didn't paste all my code, it's unnecessary. Is it true that you can't pass data parameter? This is the reason I went for esoteric ways to achieve my goal

...Except for the data option which is used by gulp-sass internally.

Correct you cannot pass the data option. That breaks the semantics of gulp.
You can search closed issue for a detailed discussion on why we do not
support the data option and some alternative approaches.
On 9 Dec 2016 12:08 AM, "venelinpetrov"<EMAIL_ADDRESS>wrote:

I know that you should pipe to somewhere... I didn't paste all my code,
it's unnecessary. Is it true that you can't pass data parameter? This is
the reason I went for esoteric ways to achieve my goal
...Except for the data option which is used by gulp-sass internally.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/dlmanning/gulp-sass/issues/569#issuecomment-265735796,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAjZWLQDIHJDEmtbzPE3oQ_A37_SWlYbks5rGAEzgaJpZM4LHw-w
.


Issue With retryWhen

Below changes that you made will make retryWhen  not working as "if (forcedClose) observer.complete();" makes observer completes.
return () => {
forcedClose = true;
if (inputSubscription) inputSubscription.unsubscribe();
  if (socket) {
    closed();
    socket.close();
  }
};

I don't understand, maybe the markdown formatting is obscuring the info. Could you restate the problem or try editing your formatting.

retryWhen should only affect errors? That force close flag is only set when the user explicitly closes the connection meaning there is no error.

Hi,
The document on retry / retryWhen says "if a source Observable emits an error, resubscribe to it in the hopes that it will complete without error"
During resubscribe process, return statement (metioned below) will be executed. Please refer to your latest changes.
    return () => {
      forcedClose = true
      if (inputSubscription)
        inputSubscription.unsubscribe()

      if (socket) {
        closed()
        socket.close()
      }
    }
  }

What does it means? It means that  forcedClose will be set to true, and a call to socket.close() (see above code) will results in call to callback socket.onclose
    socket.onclose = (event: CloseEvent) => {
      closed()
      if (forcedClose)
        observer.complete()
      else
        observer.error(new Error(event.reason))
    }

And behaviour leads to retryWhen stops attempting to resubscribe as the observer gets complete notification.
This is what I experienced with the version of Websocket I am using. The one I am using is not browser based websocket, but something different (nativescript based).

I leave it up to you to reopen this issue as the issue what I see is with not a browser.

@DeepakArora76 Thanks for the explanation, this work was done by @cPu1 in this PR: https://github.com/ohjames/rxjs-websockets/pull/34
Will revert it.

@DeepakArora76 Reverted that commit, thanks very much for your report!

@DeepakArora76 Wait, isn't this also an issue even without the forceClose stuff?

@DeepakArora76 Yes after you get an error, socket gets set to null. Therefore socket.close() won't be called when you retry the connection.

@ohjames:  This is also an issue without the forceClose stuff.  Where is the code do you set the socket to null?

Thanks :)

Sorry meant to say 6.0.1. Thanks again!

If I'm understanding correctly, I seem to still be having this issue with 6.0.1. I basically create an object that should immediately connect in the constructor, and whenever a "query" happens, it should share a websocket that will retry the connection every retryInterval ms. Two cases don't work as expected:

If my websocket server is not running when this page comes up, it never retries the connection
If I restart my websocket server while this is running, it never retries the connection.

Am I doing something wrong in here? Or is this still a bug?
const defaultFactory = (url, protocols) => new WebSocket(url, protocols)
export class WebsocketSource extends Source {
  constructor(name, {url, factory=defaultFactory, retryInterval=1000}) {
    super(name)
    this._input = (new QueueingSubject()).map(message => JSON.stringify(message))

    const { messages, connectionStatus } = websocketConnect(url, this._input, undefined, factory)

    this.messages = messages
      .retryWhen(errors => errors.delay(retryInterval))
      .map(message => JSON.parse(message))
      .share()
    this.connectionStatus = connectionStatus
  }
  send(data) {
    this._input.next(data)
  }

  /**
   * @return {Observable} An Observable indicating whether this source is "available"
   */
  health() {
    return this.connectionStatus
  }
  query() {
    return this.messages.map(updates => {
      //code here to map results
    })
  }
}

For anyone watching via this issue, @rfestag's scenario isn't as straightfoward as this one and you may not experience it yourselves, but I recommend updating to 6.0.2 which ensures that complete() is never called on an observer after error().


Thank you!!!

Sorry for writing this as an issue - but: THANK YOU SO MUCH!!!! Awesome that you share all that Finale stuff! Looking foward to seeing more from you!

Haha, thanks. Glad someone found it useful. It's been so long since I did this I don't even remember what it was :/ Probably won't be much more though, unfortunately.


Boolean in zod's schema doesn't persist in form after action result?

When I enter a string value into a text field (e.g. email, password) and action is submitted, the page refreshes and the values stay in the form (bind:value works fine)
However, the boolean field always refreshes to the default state (false).
I've checked with SuperDebug to confirm the checked state is correctly passed into the form variable (it updates when I check/uncheck the checkbox). But after an action event (form submission), the boolean value becomes false, while all other fields remain as they were before the submission.
+page.server.ts:
...
const formSchema = z.object({
    firstName: z
        .string({ required_error: "First name is required" })
        .min(1, { message: "First name must be at least 1 characters long" }),
    lastName: z
        .string({ required_error: "Last name is required" })
        .min(1, { message: "Last name must be at least 1 characters long" }),
    email: z
        .string({ required_error: "Email is required" })
        .email({ message: "Enter a valid email address" }),
    password: z
        .string({ required_error: "Password is required" })
        .min(6, { message: "Password must be at least 6 characters long" }),
    acceptedTos:
        z.boolean({ required_error: "You must accept the Terms of Service" })
});
...

+page.svelte
...
export let data: PageData;

    let success: boolean = false;
    const { form, errors, message, submitting, constraints, enhance } = superForm(data.form,
        {
            autoFocusOnError: 'detect',
            clearOnSubmit: 'none',
            multipleSubmits: 'prevent',
            onResult(event) {
                if(event.result.type == "success")
                {
                    success = true;
                    setTimeout(() => {
                        window.location.href = "/";
                    }, 500);
                }
            },
        }
    );
...

<input id="terms" type="checkbox" class="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-blue-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-blue-600 dark:ring-offset-gray-800 dark:focus:ring-offset-gray-800" bind:checked={$form.acceptedTos}>

Hello, nice coincidence! I noticed the same thing yesterday but haven't had time to look at it yet. I'll take a look tomorrow. I think it has to do something with that a checkbox field is either undefined or set to its specified value.
Btw, there is a way of making the "accept terms" work without testing the boolean value, see this FAQ entry.

Right, adding name="acceptedTos" makes the value persist on form submission. Also, the name has to match with zod's name, else it seems to not persist.

Yes, that's the required mapping if you're using the default dataType = 'form'. When set to json it serializes and posts the data structure itself, making the form fields mere placeholders for changing the value of the $form store.


Roll engine 5283341b4b69..288a855bfd8e (1 commits)

https://github.com/flutter/engine/compare/5283341b4b69...288a855bfd8e
git log 5283341b4b6945f1921bb03d2d245ea4ccd1f24c..288a855bfd8e0f32024b1457319def24b47670e7 --no-merges --oneline
288a855bf Roll src/third_party/skia b3c0bf642613..7921042df7e5 (1 commits) (flutter/engine#8984)
The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff (jsimmons@google.com), and stop
the roller if necessary.

Auto-roller completed checks. About to merge.


Error with GUI fine tuning

(migrated from https://forum.image.sc/t/error-with-gui-fine-tuning/105350)
After
(base) alobo2@alobo-ws:/media/alobo2/SP PHD U3/Islandia/Alteration/microsam/finetuning$ mamba activate sam
(sam) alobo2@alobo-ws:/media/alobo2/SP PHD U3/Islandia/Alteration/microsam/finetuning$ python -c "import torch; print(torch.cuda.is_available())"
True

I start the GUI for fine tuning with:

but get the following error (link as the rror messages are very long):
https://www.dropbox.com/scl/fi/76v0u0ymro6xuoqhluuuz/finetuning_console_20241122.txt?rlkey=so5zg0wqmj0jvnavfcir2ys35&dl=0
GPU:
(base) alobo2@alobo-ws:~$ mamba activate sam
(sam) alobo2@alobo-ws:~$  python -c "import torch; print(torch.version.cuda)"
11.8
(sam) alobo2@alobo-ws:~$ nvidia-smi
Mon Nov 25 08:41:59 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.107.02             Driver Version: 550.107.02     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA RTX A4000               Off |   00000000:01:00.0  On |                  Off |
| 41%   27C    P8              8W /  140W |      80MiB /  16376MiB |      5%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      3940      G   /usr/lib/xorg/Xorg                             69MiB |
+-----------------------------------------------------------------------------------------+

CPU:

Hi @aloboa,
It's hard to give an answer what's going on here.
I think a good starting point would be to follow what the error says:

For debugging consider passing CUDA_LAUNCH_BLOCKING=1

This can be done in your terminal using export CUDA_LAUNCH_BLOCKING=1 and then rerun the finetuning.
Once you get a new error trace, can you post it here for us?
PS. I tried to read up on this, and seems like there could be a lot of reasons why this might happen: however majority of them hint towards insufficient memory (but I don't think I can conclude on this). Let's see what the new error trace shows with a a better traceback enabled for the error source.

If the problem was due to insufficient memory, and considering I am training with 3 images, I understand I could try fine-tuning sequentially with each image, correct?

considering I am training with 3 images, I understand I could try fine-tuning sequentially with each image, correct?

micro-sam finetuning using the GUI is hard-coded at the moment to train for batch_size 1, i.e. we train over mini-batches instead of the entire dataset. So, the number of images cannot be an issue in this case.
However, there are other parameters (eg. patch_shape, n_objects_per_batch, etc) which have a direct influence on the memory used.
PS. To mention this again, the memory-related issue is just a hunch out of reading similar topics over pytorch discussion forum). I don't want to conclude that's it is the sole reason.
PPS: It would be nice to look at the new error trace, by taking care of the mention in my previous comment. Let us know how does it look.

Here we have it, it took ~1h to reach the error. Note the process is still running:
https://www.dropbox.com/scl/fi/jukqvkfpxlmev7yakerww/finetuning_console_20241126.txt?rlkey=v57etpje09kevipdfjwqks3tz&dl=0

Quite similar with 1 single image:
https://www.dropbox.com/scl/fi/m7umapv6agbk73n79e1uo/finetuning_console_20241126_1image.txt?rlkey=r759vtwvl2zaoye0zajumh7vh&dl=0

But I set /home/alobo2/finetuning as output and have nothing there.

Can you check in your current working directory if there are two directories: checkpoints and logs, and if there are some files under checkpoints/sam_model/best.pt?

Yes!
(base) alobo@pop-os:/media/alobo/SP PHD U3/Islandia/Alteration/microsam/DI17_2_autoseg$ tree check*
checkpoints
└── sam_model
    ├── best.pt
    └── latest.pt

According to the time, these files were created by the 2nd run, with one single image.

Nice, good to know.
For now, you can use the best.pt reliably via the annotator tools / CLIs. Make sure to run training over your final desired training run. We will try to reproduce the error and come back to you.
Thanks for reporting the issue.

I suggest using a path for Checkpoint menu as sam_model.pt. This would avoid the exporting the model using bioimage model functionality. This would avoid the error and translate the model checkpoints in Segment Anything style.

If I set Checkpoint as sam_model.pt,

I immediately get this error (napari does not crash, but there is no GPU or CPU activity any more, thus I abort)
(base) alobo2@alobo-ws:/media/alobo2/SP PHD U3/Islandia/Alteration/microsam/finetuning$ mamba activate sam
(sam) alobo2@alobo-ws:/media/alobo2/SP PHD U3/Islandia/Alteration/microsam/finetuning$ napari
Verifying labels in 'train' dataloader: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 76.56it/s]
Verifying labels in 'val' dataloader:   2%|██▍                                                                                | 1/50 [00:00<00:03, 12.79it/s]
---------------------------------------------------------------------------                                                                                | 0/50 [00:00<?, ?it/s]
ValueError                                Traceback (most recent call last)
File ~/micro-sam/micro_sam/sam_annotator/training_ui.py:299, in TrainingWidget.__call__(self=<micro_sam.sam_annotator.training_ui.TrainingWidget object>, skip_validate=False)
    296         pbar_signals.pbar_stop.emit()
    297         return export_checkpoint
--> 299 path = run_training()
    300 print(f"Training has finished. The trained model is saved at {path}.")

File ~/micro-sam/micro_sam/sam_annotator/training_ui.py:244, in TrainingWidget.__call__.<locals>.run_training()
    242 def run_training():
    243     train_loader, val_loader = self._get_loaders()
--> 244     train_sam_for_configuration(
        self.name = 'sam_model_20221128'
        self = <micro_sam.sam_annotator.training_ui.TrainingWidget object at 0x7233132d2290>
        self.configuration = 'rtx5000'
        train_loader = <torch.utils.data.dataloader.DataLoader object at 0x72331424c090>
        val_loader = <torch.utils.data.dataloader.DataLoader object at 0x723314223ed0>
        checkpoint_path = 'sam_model.pt'
        self.with_segmentation_decoder = True
        model_type = 'vit_b'
        self.device = 'cuda'
        self.n_epochs = 100
        pbar_signals = <micro_sam.sam_annotator._widgets.PBarSignals object at 0x723313122200>
    245         name=self.name, configuration=self.configuration,
    246         train_loader=train_loader, val_loader=val_loader,
    247         checkpoint_path=checkpoint_path,
    248         with_segmentation_decoder=self.with_segmentation_decoder,
    249         model_type=model_type, device=self.device,
    250         n_epochs=self.n_epochs, pbar_signals=pbar_signals,
    251     )
    253     # The best checkpoint after training.
    254     export_checkpoint = os.path.join("checkpoints", self.name, "best.pt")

File ~/micro-sam/micro_sam/training/training.py:557, in train_sam_for_configuration(name='sam_model_20221128', configuration='rtx5000', train_loader=<torch.utils.data.dataloader.DataLoader object>, val_loader=<torch.utils.data.dataloader.DataLoader object>, checkpoint_path='sam_model.pt', with_segmentation_decoder=True, model_type='vit_b', **kwargs={'device': 'cuda', 'n_epochs': 100, 'pbar_signals': <micro_sam.sam_annotator._widgets.PBarSignals object>})
    554         warnings.warn("You have specified a different model type.")
    556 train_kwargs.update(**kwargs)
--> 557 train_sam(
        name = 'sam_model_20221128'
        train_loader = <torch.utils.data.dataloader.DataLoader object at 0x72331424c090>
        val_loader = <torch.utils.data.dataloader.DataLoader object at 0x723314223ed0>
        checkpoint_path = 'sam_model.pt'
        with_segmentation_decoder = True
        train_kwargs = {'n_objects_per_batch': 10, 'device': 'cuda', 'n_epochs': 100, 'pbar_signals': <micro_sam.sam_annotator._widgets.PBarSignals object at 0x723313122200>}
        model_type = 'vit_b'
    558     name=name, train_loader=train_loader, val_loader=val_loader,
    559     checkpoint_path=checkpoint_path, with_segmentation_decoder=with_segmentation_decoder,
    560     model_type=model_type, **train_kwargs
    561 )

File ~/micro-sam/micro_sam/training/training.py:243, in train_sam(name='sam_model_20221128', model_type='vit_b', train_loader=<torch.utils.data.dataloader.DataLoader object>, val_loader=<torch.utils.data.dataloader.DataLoader object>, n_epochs=100, early_stopping=10, n_objects_per_batch=10, checkpoint_path='sam_model.pt', with_segmentation_decoder=True, freeze=None, device='cuda', lr=1e-05, n_sub_iteration=8, save_root=None, mask_prob=0.5, n_iterations=None, scheduler_class=<class 'torch.optim.lr_scheduler.ReduceLROnPlateau'>, scheduler_kwargs=None, save_every_kth_epoch=None, pbar_signals=<micro_sam.sam_annotator._widgets.PBarSignals object>, optimizer_class=<class 'torch.optim.adamw.AdamW'>, peft_kwargs=None, ignore_warnings=True, verify_n_labels_in_loader=50, **model_kwargs={})
    241 device = get_device(device)
    242 # Get the trainable segment anything model.
--> 243 model, state = get_trainable_sam_model(
        model_type = 'vit_b'
        device = 'cuda'
        freeze = None
        checkpoint_path = 'sam_model.pt'
        peft_kwargs = None
        model_kwargs = {}
    244     model_type=model_type,
    245     device=device,
    246     freeze=freeze,
    247     checkpoint_path=checkpoint_path,
    248     return_state=True,
    249     peft_kwargs=peft_kwargs,
    250     **model_kwargs
    251 )
    252 # This class creates all the training data for a batch (inputs, prompts and labels).
    253 convert_inputs = ConvertToSamInputs(transform=model.transform, box_distortion_factor=0.025)

File ~/micro-sam/micro_sam/training/util.py:71, in get_trainable_sam_model(model_type='vit_b', device='cuda', checkpoint_path='sam_model.pt', freeze=None, return_state=True, peft_kwargs=None, flexible_load_checkpoint=False, **model_kwargs={})
     69 # set the device here so that the correct one is passed to TrainableSAM below
     70 device = get_device(device)
---> 71 _, sam, state = get_sam_model(
        model_type = 'vit_b'
        device = 'cuda'
        checkpoint_path = 'sam_model.pt'
        flexible_load_checkpoint = False
        model_kwargs = {}
     72     model_type=model_type,
     73     device=device,
     74     checkpoint_path=checkpoint_path,
     75     return_sam=True,
     76     return_state=True,
     77     flexible_load_checkpoint=flexible_load_checkpoint,
     78     **model_kwargs
     79 )
     81 # NOTE: This is done exclusive to "get_sam_model" here to use PEFT's layer-specific initialization on top.
     82 # Whether to use Parameter Efficient Finetuning methods to wrap around Segment Anything.
     83 # Overwrites the SAM model by freezing the backbone and allow PEFT methods.
     84 if peft_kwargs and isinstance(peft_kwargs, dict):

File ~/micro-sam/micro_sam/util.py:343, in get_sam_model(model_type='vit_b', device='cuda', checkpoint_path='sam_model.pt', return_sam=True, return_state=True, peft_kwargs=None, flexible_load_checkpoint=False, **model_kwargs={})
    337 # checkpoint_path has been passed, we use it instead of downloading a model.
    338 else:
    339     # Check if the file exists and raise an error otherwise.
    340     # We can't check any hashes here, and we don't check if the file is actually a valid weight file.
    341     # (If it isn't the model creation will fail below.)
    342     if not os.path.exists(checkpoint_path):
--> 343         raise ValueError(f"Checkpoint at {checkpoint_path} could not be found.")
        checkpoint_path = 'sam_model.pt'
    344     model_hash = _compute_hash(checkpoint_path)
    345     decoder_path = None

ValueError: Checkpoint at sam_model.pt could not be found.

I apologize. You should put the path to export models with the extension .pt via the Output Path menu. You can ignore the Checkpoint menu to it's default values.

something like
/home/alobo2/finetuning/output/sam.pt  ?

Yes exactly.

Note the GUI asks for Output Path, and sam.pt is a file.

The output path accepts path to a directory (in this case, it will export the model via the bioimage model export functionality - which is the one where you reported the error), and also accepts filepath to a checkpoint with extension as .pt or .pth (in this case, it would only export your model in Segment Anything style).

No error was displayed in the terminal, but I had to abort after ~90' , both the GPU (as reported by nvtop) and the CPU were no longer being used.

Do you see a model exported at your desired path specifying /path/to/model.pt?

No worries. Let us know if it is stored. If not, I suggest to stick to best.pt model checkpoints generated in the current working directory under checkpoints folder.

Is there any way to display why the process does not finish?

I am not aware of the reason behind the slowness. Could be either the GUI / some backend process waiting to hop off the process from the cores. It's hard to say off the top of my head. But I have this in my list of TODOs later next week.
Let us know if you spot more things. Thanks!

No files were created under the output path /home/alobo2/finetuning/output/
New directories  /home/alobo2/finetuning/checkpoints and /home/alobo2/finetuning/checkpoints/sam_model/
were creted, with files best.pt and latest.pt
I'm repeating the process again and will wait longer as I do not understand why the error did not occur.

The output file has been created this time, but the process is still pending of something,
should we abort it?
(base) alobo2@alobo-ws:~/finetuning/output$ ls -l
total 366236
-rw-rw-r-- 1 alobo2 alobo2 375022470 dic  2 10:21 sam.pt

I think this is fixed. Feel free to reopen if the issue persists.

Yes, but perhaps a message to the GUI would be more user friendly.

Yes, but perhaps a message to the GUI would be more user friendly.

There are messages generated in the terminal already. We might think of a validation window pop-up to prompt when the training ends, but this would be in low priority for now!


create preview 2020-04-01 swagger apis

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Please ensure to add changelog with this PR by answering the following questions.

What's the purpose of the update?

[ ] new service onboarding
[ ] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When you are targeting to deploy new service/feature to public regions? Please provide date, or month to public if date is not available yet.
When you expect to publish swagger? Please provide date, or month to public if date is not available yet.
If it's an update to existing version,  please select SDKs of specific language and CLIs that require refresh after swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No, no need to refresh for updates in this PR

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of "no breaking changes"
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[x] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

[ ] Adding new API(s)
[x] Adding a new API version
[ ] Ensure to copy the existing version into new directory structure for first commit (including refactoring) and then push new changes including version updates in separate commits. This is required to review the changes efficiently.
[ ] Adding a new service

[ ] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

Please go through the contribution checklist for ARM API Review added as part of the review and mark them completed. It will help you fix most of the issues and improve the quality of swagger and help close the PR faster. This is a requirement before review can be continued.

Looks like the PR has breaking changes. Please fill the breaking changes checklist above and go through the breaking changes review process outlined here: https://dev.azure.com/msazure/AzureWiki/_wiki/wikis/AzureWiki.wiki/37684/Breaking-Changes

@robins1212 For quicker API review, can you please follow below two?

Update the change log and other items in the description providing details on what all changed in the PR.
To easily identify the delta changes from previous api version, the recommendation is to copy the existing version into new directory structure for first commit and then push new changes in subsequent commits.

Please raise a new PR with the above recommendations for faster review.


Allow nil comments to be passed to #expect() or #require().

This PR allows nil to be passed to the expectation macros as their documented signatures allow.
Resolves #485.
Checklist:

[x] Code and documentation should follow the style of the Style Guide.
[x] If public symbols are renamed or modified, DocC references should be updated.

@swift-ci please test

@swift-ci please test


dan/per-10323-opal-statistics-api-errors

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

[x] I sign off on contributing this submission to open-source
[ ] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[ ] This PR does not contain plagiarized content.
[ ] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

Closes #619


[GOV] Slimmed down Scikit-learn-like governance document.

This PR contains changes to the governance document in the style on Scikit-learn, based off my opinions from #2. All of this is flexible, but I think we should cut down the size of the original document whatever we go with.
This is a full rewrite of the governance document. Diff can be seen here but its not very helpful https://gist.github.com/MatthewMiddlehurst/b51db154402ecd88ca7587133b65e28a/revisions
Key changes:

Removes algorithm maintainer role
Removes CC observer role
Removes some CC power i.e. veto right

current gov page: https://www.aeon-toolkit.org/en/latest/get_involved/governance.html
new gov page: https://aeon-toolkit--195.org.readthedocs.build/en/195/get_involved/governance.html

an alternative for discussion

chatgpt likes it. Here is what is says about the rest
The text is generally well written and clear. However, here are some suggestions to improve it:
Governance and decision-making
The purpose of this document is to formalize the governance process used by the aeon project, to clarify how decisions are made and how the various elements of our community interact. Our goal is to ensure a transparent, democratic, and inclusive decision-making process that empowers all community members to contribute to the project.
Aeon is a community-owned and community-run project. Anyone with an interest in the project can join the community, contribute to the project design, and participate in the decision-making process. We believe that diversity and inclusivity are critical to the success of the project and welcome contributions from all backgrounds and perspectives.
This document establishes the decision-making structure used by aeon, which strives to find consensus from the community while avoiding any deadlocks. Our decision-making process involves different roles, each with specific responsibilities.
Roles
Contributors
Contributors are community members who have contributed in concrete ways to the project. Anyone can become a contributor, and contributions can take many forms – not only code – as detailed in the contributing guide. Contributors play a crucial role in shaping the project and can participate in discussions and decision-making processes.
Core Developers
Core developers are community members who have made significant contributions and are trusted to continue the development of the project and engage with its community. Core developers are granted write access to the aeon repository and voting rights on most project decisions. They are expected to review code contributions and engage with topics or code they are knowledgeable about.
New core developers are nominated by existing core developers and are subject to a two-thirds majority vote of existing core developers. Core developers are expected to maintain a reasonable amount of engagement with the project and may lose their status after a long period of inactivity and lack of engagement with fellow developers. Developing code, interacting with contributions, and engaging with the broader community are all valid contributions for core developers.
Community Council
The Community Council (CC) consists of core developers who have additional responsibilities to ensure the smooth running of the project. This includes strategic planning, project infrastructure management, and release management. In the event that core developers fail to reach a consensus, the CC is responsible for resolving the issue.
CC membership is subject to a two-thirds majority vote of core developers, and terms last for two years, after which a new vote must be held. The CC is accountable to the community and must report regularly on its activities and decisions.
Code of Conduct Committee
The Code of Conduct Committee (CoCC) consists of contributors tasked with maintaining the aeon Code of Conduct (CoC) and managing reports of breaking the CoC. CoCC members are expected to review reports of CoC violations, contact and discuss with involved individuals, and make recommendations on actions to take.
Any CoCC members involved in a CoC report or CoCC members who have a conflict of interest regarding the report are expected to recuse themselves from the process. If no CoCC members are available to review a report in a timely manner, the responsibility will fall to the Community Council.
CoCC membership is subject to a two-thirds majority vote of core developers, and terms last for two years, after which a new vote must be held. CC members cannot simultaneously be CoCC members to avoid conflicts of interest.

I have incorporated suggestions and made a PR into this branch for the workgroups suggestion by @ltsaprounis in #389. I suppose we can discuss that either in that PR or here as it is relevant to both.

Will review next week, on vacation this week.

This currently has 5 approvals and one previous approval by @lmmentel. Could you respond to the comments on the open conversations @aiwalter when you find the time? No pressure to approve if you still have issues, but would be good to make progress.

I am calling a vote on this PR. It will conclude 16/10/2023. Core developers can either signal approval (i.e. '+1' or 'I approve') or rejection (i.e. -1 or 'I reject') in the posts below this. Going by current rules, a 2/3 majority is required to pass.

+1

+1

+1

+1

+1

+1

+1

+1

Vote has passed 8 Yes to 0 No. Merging.