Bug: conda install of plugin via Plugin Manager doesn't work

🐛 Bug
I originally noted this in #5198
Using the conda source to install a plugin (pure conda env, everything from conda-forge) doesn't work and shows an error in the Status:
Starting '/Users/piotrsobolewski/Dev/miniforge3/bin/mamba' with args ['install', '-y', '--prefix', '/Users/piotrsobolewski/Dev/miniforge3/envs/napari-main', '--override-channels', '-c', 'conda-forge', 'napari-animation==0.0.5']
Traceback (most recent call last):
  File "/Users/piotrsobolewski/Dev/miniforge3/bin/mamba", line 7, in <module>

    from mamba.mamba import main
ModuleNotFoundError: No module named 'mamba'

Task finished with exit code 1 with status 0.

Note: I have mamba installed (mamba 1.3.0, conda 22.9.0).
To Reproduce
Steps to reproduce the behavior:

Make a conda env with the latest main nightly: mamba create -n napari-main -c "napari/label/nightly" -c conda-forge napari python=3.10
Open the Plugin Manager, scroll down to napari-animation
Open the Installation Info menu and change source from PyPi to conda
Click install, open Show Status

Expected behavior
The plugin should install, if the option to change to conda is available.
Environment
napari: 0.5.0a2.dev42+g9e911040
Platform: macOS-13.2.1-arm64-arm-64bit
System: MacOS 13.2.1
Python: 3.10.9 | packaged by conda-forge | (main, Feb 2 2023, 20:26:08) [Clang 14.0.6 ]
Qt: 5.15.6
PyQt5: 5.15.7
NumPy: 1.24.2
SciPy: 1.10.1
Dask: 2023.3.1
VisPy: 0.12.1
magicgui: 0.7.2
superqt: unknown
in-n-out: 0.1.7
app-model: 0.1.2
npe2: 0.6.2

OpenGL:
- GL version: 2.1 Metal - 83
- MAX_TEXTURE_SIZE: 16384

Screens:
- screen 1: resolution 1680x1050, scale 2.0

Settings path:
- /Users/piotrsobolewski/Library/Application Support/napari/napari-main_e240b8daeed1098c91bdc4f2a9ad585200c6d954/settings.yaml

Additional context
mamba is installed in base. if I open python REPL, in base, then from mamba.mamba import main works. In my napari env, it doesn't, with the same error as above.
Also, a simple test of QProcess works:
from qtpy.QtCore import QProcess

def test_mamba_qprocess():
    process = QProcess()
    process.start('mamba', ['--version'])
    process.waitForFinished()

    if process.exitStatus() == QProcess.NormalExit:
        output = process.readAllStandardOutput().data().decode().strip()
        if output.startswith('mamba '):
            return output.split()[1]
    return None

The plot thickens:
If I use ipython and run:
from qtpy.QtCore import QProcess

def test_mamba_qprocess():
    process = QProcess()
    process.start('mamba', ['install', 'napari-animation', '--dry-run'])
    process.waitForFinished()

    if process.exitStatus() == QProcess.NormalExit:
        output = process.readAllStandardOutput().data().decode().strip()

        return output
    return None

And then:
test_mamba_qprocess()
I get the expected output listing stuff to install.
But if I run the same in the napari-console, i get:
Out[2]: ''

If I then modify the output to get the StandardError:
output = process.readAllStandardError().data().decode().strip()
Out[4]: 'Traceback (most recent call last):\n  File "/Users/piotrsobolewski/Dev/miniforge3/condabin/mamba", line 7, in <module>\n    from mamba.mamba import main\nModuleNotFoundError: No module named \'mamba\''

Bam. So it seems related to something that napari sets or to being run from inside another Qt loop?

OK, I figured it out, I think.
I think it's the same issue as: https://github.com/spyder-ide/spyder/issues/20599
So napari sets PYTHONEXECUTABLE to sys.executable, which is python in the env that napari was run from. But that env doesn't have conda/mamba, only base does.
So if we do env.remove('PYTHONEXECUTABLE') then it works, because mamba (or conda, it doesn't matter) is available in the path, but uses a different python executable.
Try:
from qtpy.QtCore import QProcess, QProcessEnvironment

def test_mamba_qprocess():
    env = QProcessEnvironment.systemEnvironment()
    env.remove('PYTHONEXECUTABLE')   # toggle this line
    process = QProcess()
    process.setProcessEnvironment(env)
    process.start('mamba install napari-animation --dry-run')
    process.waitForFinished()
    if process.exitStatus() == QProcess.NormalExit:
        output = process.readAllStandardOutput().data().decode().strip()

        return output
    return None

I can toggle the PYTHONEXECUTABLE line to see it work or fail.
What I don't get is why the shebang at the top of /Users/piotrsobolewski/Dev/miniforge3/condabin/mamba :
#!/Users/piotrsobolewski/Dev/miniforge3/bin/python

doesn't prevent this.
I think it's also related to: https://github.com/napari/napari/issues/5454
so it's probably a macOS issue only
I can make a PR to fix, but before I do, @jaimergp @aganders3 do you have any thoughts?

Whoa - sorry you ended up on this journey, but nice troubleshooting! I can test this later but what you found makes sense to me and removing PYTHONEXECUTABLE seems okay as long as we test for other side effects of that.
Out of curiosity, does it work if you install mamba (+conda?) explicitly into the env?

So if
I do:
mamba create -n napari-main -c "napari/label/nightly" -c conda-forge napari python=3.10
mamba activate napari-main
mamba install mamba
napari

And then use the Plugin Manager, as described in the OP to install napari-animation from conda, it works!
Starting '/Users/piotrsobolewski/Dev/miniforge3/bin/mamba' with args ['install', '-y', '--prefix', '/Users/piotrsobolewski/Dev/miniforge3/envs/napari-main', '--override-channels', '-c', 'conda-forge', 'napari-animation==0.0.5']
Transaction

  Prefix: /Users/piotrsobolewski/Dev/miniforge3/envs/napari-main

  Updating specs:

   - napari-animation==0.0.5
   - ca-certificates
   - certifi
   - openssl

  Package                Version  Build             Channel                    Size
─────────────────────────────────────────────────────────────────────────────────────
  Install:
─────────────────────────────────────────────────────────────────────────────────────

  + ffmpeg                 5.1.2  gpl_hf318d42_106  conda-forge/osx-arm64       8MB
  + gmp                    6.2.1  h9f76cd9_0        conda-forge/osx-arm64     571kB
  + gnutls                 3.7.8  h9f1a10d_0        conda-forge/osx-arm64       2MB
  + imageio-ffmpeg         0.4.8  pyhd8ed1ab_0      conda-forge/noarch         20kB
  + lame                   3.100  h1a8c8d9_1003     conda-forge/osx-arm64     529kB
  + libidn2                2.3.4  h1a8c8d9_0        conda-forge/osx-arm64     173kB
  + libtasn1              4.19.0  h1a8c8d9_0        conda-forge/osx-arm64     117kB
  + libunistring          0.9.10  h3422bc3_0        conda-forge/osx-arm64       2MB
  + libvpx                1.11.0  hc470f4d_3        conda-forge/osx-arm64       1MB
  + napari-animation       0.0.5  pyhd8ed1ab_0      conda-forge/noarch         28kB
  + nettle                 3.8.1  h63371fa_1        conda-forge/osx-arm64     537kB
  + openh264               2.3.1  hb7217d7_2        conda-forge/osx-arm64     588kB
  + p11-kit               0.24.1  h29577a5_0        conda-forge/osx-arm64     891kB
  + svt-av1                1.4.1  h7ea286d_0        conda-forge/osx-arm64       1MB
  + x264              1!164.3095  h57fd34a_2        conda-forge/osx-arm64     717kB
  + x265                     3.5  hbc6ce65_3        conda-forge/osx-arm64       2MB

  Summary:

  Install: 16 packages

  Total download: 21MB

─────────────────────────────────────────────────────────────────────────────────────

Looking for: ['napari-animation==0.0.5']

Pinned packages:
  - python 3.10.*
  - napari 0.5.*

Downloading and Extracting Packages

Preparing transaction: ...working...
done
Verifying transaction: ...working...
done

Executing transaction: ...working...
done

Task finished with exit code 0 with status 0.

Side note: after a restart, uninstalling it used pip:
Found existing installation: napari-animation 0.0.5

Uninstalling napari-animation-0.0.5:

  Successfully uninstalled napari-animation-0.0.5

Task finished with exit code 0 with status 0.

Probably less than ideal? It was showing as source: conda in the installed list, so napari was aware of that...
Anyhow, I don't want to revert the PR that added PYTHONEXECUTABLE, just remove it from the env QProcessEnvironment. Since it was added for venv/pyenv issues, then probably those folks wouldn't be using conda, so it should be mostly harmless? I'll make a PR and we can do more testing.

Better yet, this issue only occurs when running napari direct from the terminal.
running napari from ipython  via import napari and  napari.Viewer() makes installing from conda work.


AEMO-617: new message form

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

Closing as this has been superseded by a new PR


Tetrahedral

WIP:

The implementation of the tetrahedral features  that include:

Reading a tetrahedral mesh (unstructured grid) (.inp .vtu,.vtk)
defining and transforming the tetrahedral mesh structure similarly to triangle Mesh
writing a tetrahedral Mesh (.vtu, .vtk)

The implementation of the intensity representation from row image through the tetrahedral mesh:

Use Bernstein polynomial interpolation ( each tetrahedron of the tetrahedral Mesh being reprentaed by density function )

Thanks a lot for this PR. I added @Andreas-Forster @DanaRahbani @kahrpatrick @madsendennis  as reviewers, to invite them to participate in a discussion and collaboration.

You are welcome, yes I forgot to add them.
Jean-Rassaire
*AIMS alumnus | MSc *Biomedical Eng | *PhD candidate (*Biomedical Eng)
*University of Cape Town, South Africa | *IMT Atlantique, Brest, France
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
<EMAIL_ADDRESS><EMAIL_ADDRESS>+33 (0)774138689
Skype ID: rassaire.fouefack
Twitter: @JFouefack
Linkedin:www.linkedin.com/in/jean-rassaire

Medical Image Inferencing & Distributed Diagnostics
https://twitter.com/hashtag/MI2D2?src=hash
Laboratory of Medical Information Processing http://latim.univ-brest.fr/
On Fri, Oct 18, 2019 at 2:09 PM Marcel Luethi<EMAIL_ADDRESS>wrote:

Thanks a lot for this PR. I added @Andreas-Forster
https://github.com/Andreas-Forster @DanaRahbani
https://github.com/DanaRahbani @kahrpatrick
https://github.com/kahrpatrick @madsendennis
https://github.com/madsendennis as reviewers, to invite them to
participate in a discussion and collaboration.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/unibas-gravis/scalismo/pull/288?email_source=notifications&email_token=AGMNXMTX3XGPUWLEW3CP6WDQPGRO7A5CNFSM4JCGKXI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBUEUNQ#issuecomment-543705654,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGMNXMWSUCFZTTL2WPVOU53QPGRO7ANCNFSM4JCGKXIQ
.

I just added a tetrahedral mesh to  src/test/resources. It can be used for testing.
My initial test showed that reading and writing this mesh succeeds, but visualizing it in Paraview reveals that some faces of the tetrahedral mesh get lost.

I just added a tetrahedral mesh to src/test/resources. It can be used for testing.
My initial test showed that reading and writing this mesh succeeds, but visualizing it in Paraview reveals that some faces of the tetrahedral mesh get lost.

So the number of faces is less than the one from the original?

I just added a tetrahedral mesh to src/test/resources. It can be used for testing.
My initial test showed that reading and writing this mesh succeeds, but visualizing it in Paraview reveals that some faces of the tetrahedral mesh get lost.

So the number of faces is less than the one from the original?

I have just read, written and checked in Paraview. They have the same number of faces. Find attached the picture.

Did you check it with the mesh that I provided? The visualization in Paraview (after reading and writing) clearly shows some artifacts.

Did you check it with the mesh that I provided? The visualization in Paraview (after reading and writing) clearly shows some artifacts.

Yes, I have seen that. I am going through the code to figure out.

I just created the following Test-code, which should illustrate how the new meshes class can be used:
object TetraTest {

  scalismo.initialize()
  implicit val rng = scalismo.utils.Random(42L)

  def main(args: Array[String]): Unit = {
    val referenceMesh: TetrahedralMesh[_3D] = MeshIO.readTetrahedralMesh(new java.io.File("./src/test/resources/TetraMesh.vtk")).get

    // Creating a GP
    val gk = DiagonalKernel[_3D](GaussianKernel(10), 3)
    val gp = GaussianProcess[_3D, EuclideanVector[_3D]](gk)
    val lowRankGP = LowRankGaussianProcess.approximateGPCholesky(referenceMesh.pointSet, gp, 1e-5, NearestNeighborInterpolator())

    // Creating a statistical volume model
    val volumeModel = StatisticalVolumeMeshModel(referenceMesh, lowRankGP)

    // Sampling from the models
    for (i <- 0 until 10) {
      val sampleVolume = volumeModel.sample()
      MeshIO.writeTetrahedralMesh(sampleVolume, new java.io.File(s"sample-$i.vtk")).get
    }

    // Creating scalar representations
    val scalars = referenceMesh.pointSet.points.map((pt: Point[_3D]) => 1.0).toIndexedSeq
    val volumeMeshField = ScalarVolumeMeshField(referenceMesh, scalars)
    val volumeField = volumeMeshField.interpolate(NearestNeighborInterpolator())

    // Warping a scalar volume mesh with the output of a GP
    val sampleDeformation = lowRankGP.sample()
    val warpedVolumeMeshField = volumeMeshField.transform(p => p + sampleDeformation(p))

    // val ui = ScalismoUI()
    // ui.show(volumeMeshField, "volumeMesh")
  }

}

@Andreas-Forster Do you agree with how this looks from the user's perspective? If yes, we can take this as a starting point for working on the visualization / registration

The ScalarVolumeMeshField class should be a case class as in ScalarMeshField to make the .mesh accessible.

I agree. This should be changed when the core data structures are stabilized.

I am closing this PR, as the core concepts from tetrahedral meshes have been integrated as separate PRs. The same will be done for the intensity models in a separate milestone


Return null if no newlines were found

When being used programmatically, it returns null if no newlines were found. On the command line, it simply returns an empty string.
If you would rather have the programmatic interface also return an empty string, I’d be happy to update this PR.

It intentionally returns \n as a sane default if no newline can be detected.

Understandable, but this makes it difficult to check if your files use \r\n if you actually want to use \r\n. If you then have a file without newlines you can’t be sure if you actually used \n mistakenly or if the file simply has no newlines.

You have a valid point, but I don't think your edge-case is worth changing the sane default and having consumer have to care about the possibility of it being null.
IMHO if the file doesn't have any newlines, \n should be used anyways.


feat(query): updating queries related to "Parameter Object"

Signed-off-by: Rafaela Soares<EMAIL_ADDRESS>Proposed Changes

Updating queries related to "Parameter Object". (The concat_path function returns an empty string for the global "Parameter Object", which makes the search key invalid)
Deleted rule related to "definitions" since this object just has Schema Object and not Parameter Object

I submit this contribution under the Apache-2.0 license.

Pending analysis on why OPA is yielding a different number of results sometimes,
Seems that after the update to v0.49.4 the output of a query has become non-deterministic.
We have to check if this has something to do with this issue: https://github.com/open-policy-agent/opa/issues/3546
On worst-case scenario we should revert to OPA v0.28.0


FR: Shift click on a date to open it in the right sidebar

Hi,
Thanks for making this useful plugin. Currently, shift-clicking on any date opens it in the main window. It would be great to have the option to shift-click on a date to open it directly in the right sidebar. This would give us more flexibility in quickly browsing through multiple journal entries while working on a note in the main window.

Updated, please upgrade and take a look.

It works pretty well. Thank you!


Build CFP form for OSPOlogy topics

Create a CFP g.form to submit OSPOlogy topics and make it easier to share on SM channels. The form should include:

Session Topic
Abstract
Benefits for the OSPO Ecosystem
Speaker(s)
Short bio
Speaker's Email info

My advice here is maybe use a github form vs gform:
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms
(gforms sometimes are hard for folks in China)
On Wed, Dec 15, 2021 at 4:06 AM Ana Jimenez Santamaria <
@.***> wrote:

Create a CFP g.form to submit OSPOlogy topics and make it easier to share
on SM channels. The form should include:

Session Topic
Abstract
Benefits for the OSPO Ecosystem
Speaker(s)
Short bio
Speaker's Email info

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/todogroup/ospology/issues/36, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAPSIJSIPAC5XGHQWISNP3URBSCDANCNFSM5KDGNDLQ
.

--
Cheers,
Chris Aniszczyk
https://aniszczyk.org

@caniszczyk I've created a GitHub form for the CFP: https://github.com/todogroup/ospology/tree/main/.github/ISSUE_TEMPLATE
Seems that everything works as expected 👍

Awesome! I think this is better :)
On Thu, Dec 16, 2021 at 7:47 AM Ana Jimenez Santamaria <
@.***> wrote:

@caniszczyk https://github.com/caniszczyk I've created a GitHub form
for the CFP:
https://github.com/todogroup/ospology/tree/main/.github/ISSUE_TEMPLATE
Seems that everything works as expected 👍
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/todogroup/ospology/issues/36#issuecomment-995833039,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAPSIOEO7CPQWZGTN7VFXDURHUVJANCNFSM5KDGNDLQ
.

--
Cheers,
Chris Aniszczyk
https://aniszczyk.org

done


Connect more post-template engines like twig, blade and etc

Especially since spiral templater does't care about command based templating.


Docs update tweaks

These are just two small tweaks, as mentioned in this comment on PR #97

I have cherry-picked these corrections in the main PR.
Sorry for the mess: I tried to perform a merge, but, there was something oddly corrupt in my local git source and this was the cleanest way I managed to fix this.


Swiper bug input radio checked

The problem with input radio element in .swiper-slide with option loop:true.

First of all defult checked radio after initialization plugin became not checked.
When i checked radiobuton and start scrolling caruosel the checked radiobutton became not checked
When i click on label with for="test" the radibutton with id="test" not became checked, so standard behavior of label with radio not suportted
https://jsfiddle.net/hkn1c4pw/

Look at generated source code, there are duplicated slides, so you'll have multiple radio inputs with same "value" attribute. You should consider it and add a bit of custom logic to check/uncheck such radios. For example https://jsfiddle.net/pddayjc4/1/


auth.admin.generateLink not working with PKCE

Bug report

[x] I confirm this is a bug with Supabase, not with my own application.
[x] I confirm I have searched the Docs, GitHub Discussions, and Discord.

Describe the bug
auth.admin.generateLink() does not seem to work with PKCE.
To Reproduce
const supabaseAdmin = createClient<Database>(
	PUBLIC_SUPABASE_URL,
	SUPABASE_SERVICE_ROLE_KEY,
	{
		auth: {
			autoRefreshToken: false,
			persistSession: false,
			detectSessionInUrl: false,
			flowType: 'pkce',
		},
	}
const link_result = await supabaseAdmin.auth.admin.generateLink({
	email<EMAIL_ADDRESS>	type: 'magiclink',
})
console.log(link_result.data.properties)

Running the above outputs this:
{
  action_link: 'http://localhost:5801/auth/v1/verify?token=be63b5c2adbcb1152b102d51459bdf4df5f1ff47e26d44d0447c6835&type=magiclink&redirect_to=http://localhost:5800',
  email_otp: '840907',
  hashed_token: 'be63b5c2adbcb1152b102d51459bdf4df5f1ff47e26d44d0447c6835',
  redirect_to: 'http://localhost:5800',
  verification_type: 'magiclink'
}

As you can see, the token above doesn't start with pkce_.
Expected behavior
Would expect it to work like supabase.auth.signInWithOtp(), where you get emailed a PKCE token, which does start with pkce_, e.g:
http://localhost:5801/auth/v1/verify?token=pkce_681cbde9a87acc3223cf75c8a068ab56c530bec5855d16457c5254b6&type=magiclink&redirect_to=http://localhost:5800

System information

OS: macOS
Version of supabase-js: 2.22.0
Version of Node.js: 18.14.2

Hey @probablykasper,
Thanks for taking the time to file the issue! Do you mind expanding more on the use case for using generateLink with PKCE?

I'm just trying to have a button that instantly logs you into a test account during development, so it's not massively critical for me. I imagine others using generateLink() are still interested in the benefits of PKCE though

Thanks for the swift response. Was wondering as one major use case of generateLink  to generate a link to bypass the Supabase Auth mailing system and use another mailing system.
For that particular case, the mailer link would only work when sending to an email address is accessible via your browser since both the code challenge which is generated would be stored in localStorage of the browser (when using default storage) and the security benefits of the flow would be lost if the code challenge is sent around.
We'll let you know once we have a workaround for using generateLink + PKCE

What are the security benefits that would be lost if the code challenge is sent around?

Hey @probablykasper,
Apologies for the delayed reply. I'm re-reading this message now and realise that I misspoke it is the code_verifier that is stored in localStorage and needs to be sent together with the link.  I think the overall concern is that by supporting generateLink with PKCE we may not be able to provide the guarantees that PKCE is supposed to provide.
My understanding is that PKCE is meant to  guarantee that the account initiating the flow is the same as the account exchanging the token.  When the generated link is clicked, an auth code is returned and the auth_code is used together with the code_verifier in order to generate an access token. The code_verifier serves to correlate the final access token request with the initial authorisation request and this might give an added level of security in a mobile or SPA environment. If the code_verifier is sent over the network the auth system cannot know that the code_verifier and associated link was not intercepted and used by a malicious attacker.
As a workaround, we are considering support for the auth code flow which would not require a code challenge.  Do let us know if you have any suggestions or alternative approaches that should be considered. There  might be something that we've missed on our end.

Thanks for the in-depth explanation! I'm having a hard time imagining cases where this security benefit helps though. If an attacker reads the link from my email, they can simply request a new login, read the new email and gain access. It would help if I accidentally send the link to someone without clicking it, but beyond that I'm not too sure?

As a workaround, we are considering support for the auth code flow which would not require a code challenge.

That would be great, if the email link instead just approves the login! That would also let me use my phone to approve the login, so I could more easily and safely log in on someone else's computer.


Template literals types

Describe the issue
I get a syntax error whenever I use the typescript’s template literal types
To Reproduce
`key/${number}`

Error: Unexpected Token `key/${number}`

Which mode was used:

[ ] jsdoc
[ ] closure
[x] typescript

Expected behavior
I’m not sure how kind of token this should produce. Either a new kind of:
{
  "type": "TEMPLATE_LITERAL",
  "templateStrings": ["key/"],
  "templateExpressions": [
    {
      "type": "name",
      "name": "number"
    }
  ]
}

or repurpose the string value token with a new quoteStyle:
{
  "type": "STRING_VALUE",
  "quoteStyle": "template",
  "string": "key/${value}"
}

In which modes would you expect the parser to accept the failing expression:

[ ] jsdoc
[ ] closure
[x] typescript

Additional context
Add any other context about the problem here.

I assume this is a rather complex issue, that might not be solvable with a pratt parser. I suggest using the typescript parser directly instead of this project.


Revert "python: kombu: 4.6.11 -> 5.0.0"

This reverts commit a34aba72c9ff1b80a888b6762008191595a7ca58.

Motivation for this change
@FRidh This breaks celery.  The celery 5 version which will support kombu 5 has not been released yet.
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 nixpkgs-review --run "nixpkgs-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.

kombu isn't used anywhere except for celery, so this revert shouldn't break anything.


Prove user know a pdf password

Motivation
In current version, prover only need provide a pdf file, however prover must provide password of pdf also to ensure he have permission on this pdf file.
Solution
Researching...

Circuit should follow steps below:

Prove user hold pdf file with sha1(pdf-data) = h and h is a ending part of EMSA-PKCS1-v1_5(pdf-data).
Prove pdf data contain  O value.
Prove user hold password string to compute O value in PDF.
You can check Algorithm 2: Computing an encryption key in PDF 32000 specs for more details.


Report PipelineRunTimeout properly  in the git provider interface

This should be doable and the watcher should handle that very nicely...

@sm43 does that make sense?

yeah we need to parse the pipelineRun status
we could handle this and other few errors like secret is missing, task is missing
not sure if we already have this reported in a better way with your recent changes 🤔

most of those errors should show up in the vcs ui and namespace events, I am not sure if timeout gets reported but in any case we should report them in github  in the check_run as timeout status


VS2022 crashes when invoking 'Find file'

(I took the liberty of using the bug template from GitExtensions itself)
Environment

GitExtensions VSIX <IP_ADDRESS>

copy paste from VS2022 about:
Microsoft Visual Studio Professional 2022
Version 17.0.4
VisualStudio.17.Release/17.0.4+32014.148
Microsoft .NET Framework
Version 4.8.04084
Installed Version: Professional
Visual C++ 2022   00476-80000-00000-AA007
Microsoft Visual C++ 2022
.NET Core Debugging with WSL   1.0
.NET Core Debugging with WSL
ADL Tools Service Provider   1.0
This package contains services used by Data Lake tools
ASA Service Provider   1.0
ASP.NET and Web Tools 2019   17.0.795.42246
ASP.NET and Web Tools 2019
ASP.NET Web Frameworks and Tools 2019   17.0.795.42246
For additional information, visit https://www.asp.net/
Azure App Service Tools v3.0.0   17.0.795.42246
Azure App Service Tools v3.0.0
Azure Data Lake Tools for Visual Studio   2.6.4000.0
Microsoft Azure Data Lake Tools for Visual Studio
Azure Functions and Web Jobs Tools   17.0.795.42246
Azure Functions and Web Jobs Tools
Azure Stream Analytics Tools for Visual Studio   2.6.4000.0
Microsoft Azure Stream Analytics Tools for Visual Studio
C# Tools   4.0.1-1.21568.1+6ab6601178d9fba8c680b56934cd1742e0816bff
C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Common Azure Tools   1.10
Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.
Extensibility Message Bus   1.2.6 (master@34d6af2)
Provides common messaging-based MEF services for loosely coupled Visual Studio extension components communication and integration.
Fabric.DiagnosticEvents   1.0
Fabric Diagnostic Events
GitExtensions   1.0
Git Extensions is a graphical user interface for Git that allows you to control Git without using the command-line
Microsoft Azure Hive Query Language Service   2.6.4000.0
Language service for Hive query
Microsoft Azure Service Fabric Tools for Visual Studio   17.0
Microsoft Azure Service Fabric Tools for Visual Studio
Microsoft Azure Stream Analytics Language Service   2.6.4000.0
Language service for Azure Stream Analytics
Microsoft Azure Tools for Visual Studio   2.9
Support for Azure Cloud Services projects
Microsoft JVM Debugger   1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
Microsoft Library Manager   2.1.134+45632ee938.RR
Install client-side libraries easily to any web project
Microsoft MI-Based Debugger   1.0
Provides support for connecting Visual Studio to MI compatible debuggers
Microsoft Visual C++ Wizards   1.0
Microsoft Visual C++ Wizards
Microsoft Visual Studio Tools for Containers   1.2
Develop, run, validate your ASP.NET Core applications in the target environment. F5 your application directly into a container with debugging, or CTRL + F5 to edit & refresh your app without having to rebuild the container.
Microsoft Visual Studio VC Package   1.0
Microsoft Visual Studio VC Package
Mono Debugging for Visual Studio   17.0.11 (54f19d2)
Support for debugging Mono processes with Visual Studio.
NuGet Package Manager   6.0.1
NuGet Package Manager in Visual Studio. For more information about NuGet, visit https://docs.nuget.org/
ProjectServicesPackage Extension   1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
Razor (ASP.NET Core)   <IP_ADDRESS>6603+e9cd763349a080127b6519ffbec0123949a4c385
Provides languages services for ASP.NET Core Razor.
SQL Server Data Tools   17.0.62110.20190
Microsoft SQL Server Data Tools
Test Adapter for Boost.Test   1.0
Enables Visual Studio's testing tools with unit tests written for Boost.Test.  The use terms and Third Party Notices are available in the extension installation directory.
Test Adapter for Google Test   1.0
Enables Visual Studio's testing tools with unit tests written for Google Test.  The use terms and Third Party Notices are available in the extension installation directory.
ToolWindowHostedEditor   1.0
Hosting json editor into a tool window
TypeScript Tools   17.0.1001.2002
TypeScript Tools for Microsoft Visual Studio
Visual Basic Tools   4.0.1-1.21568.1+6ab6601178d9fba8c680b56934cd1742e0816bff
Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Visual F# Tools   17.0.0-beta.21522.2+6d626ff0752a77d339f609b4d361787dc9ca93a5
Microsoft Visual F# Tools
Visual Studio Code Debug Adapter Host Package   1.0
Interop layer for hosting Visual Studio Code debug adapters in Visual Studio
Visual Studio Container Tools Extensions   1.0
View, manage, and diagnose containers within Visual Studio.
Visual Studio IntelliCode   2.2
AI-assisted development for Visual Studio.
Visual Studio Tools for CMake   1.0
Visual Studio Tools for CMake
Visual Studio Tools for Containers   1.0
Visual Studio Tools for Containers
VisualStudio.DeviceLog   1.0
Information about my package
VisualStudio.Foo   1.0
Information about my package
VisualStudio.Mac   1.0
Mac Extension for Visual Studio
Xamarin   <IP_ADDRESS>3 (d17-0@fb07a17)
Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.
Xamarin Designer   <IP_ADDRESS> (remotes/origin/d17-0@a351f0f1f)
Visual Studio extension to enable Xamarin Designer tools in Visual Studio.
Xamarin Templates   17.0.17 (9e779b0)
Templates for building iOS, Android, and Windows apps with Xamarin and Xamarin.Forms.
Xamarin.Android SDK   <IP_ADDRESS> (d17-0/6b0e6b2)
Xamarin.Android Reference Assemblies and MSBuild support.
Mono: c633fe9
Java.Interop: xamarin/java.interop/d17-0@febb1367
ProGuard: Guardsquare/proguard/v7.0.1@912d149
SQLite: xamarin/sqlite/3.36.0@a575761
Xamarin.Android Tools: xamarin/xamarin-android-tools/d17-0@a5194e9
Xamarin.iOS and Xamarin.Mac SDK   <IP_ADDRESS> (8fc41ae82)
Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support.
copy/paste from GitExtensions about:

Git Extensions <IP_ADDRESS>24
Build 65f01f39982ccb121c4df7d4b00b506939553958
Git 2.34.0.windows.1
Microsoft Windows NT 10.0.19043.0
.NET Framework 4.8.4420.0
DPI 96dpi (no scaling)

Issue description:
Whenever I invoke the 'Find file' option from the GitExt menu, VS2022 almost instantly crashes. This happens both with a small solution (3 projects) as well as with a larger solution (111 projects). It happens both when VS2022 is started with elevated permissions (to debug) as well as when it is started with normal user permissions.
Three of my co-workers experience the same issue. They are working on identical workstations with (near) identical software configurations on the same type of solutions, connecting to the same Git repository.
Not sure whether this is relevant: I used the 'Customize Menu...' option under the Extensions menu to remove the checkmark for GitExt. This if needed to move the GixExt menu from the Extensions menu to its own spot in the main menu bar.

Steps to reproduce:

Open VS2022 and open a solution that is located inside a Git repo.
Invoke the 'Find file' option under the GitExt menu either by Alt+I and then L (keyboard shortcuts) or by clicking with the mouse.

Notice how the cursor changes from an arrow to an arrow + blue spinning circle (busy indicator), almost instantly.
Notice the standard Windows 'xxx has stopped working' dialog that pops up.

Did this work in previous version of the GitExtensions plugin?
Yes, under VS2019 and with the previous version of the VSIX plugin (I have version <IP_ADDRESS> installed), opening the same solution/repo, etc. the 'Find file' option is working without issues.
Additional info
Please let me know if I should provide more information. If there are any logs that might be relevant. If there is any way to generate additional logging, etc. It would be great if this issue can be resolved!
Kind regards,
Wout Kroon

Reproduced
This command starts "GitExtensions.exe searchfile" that displays the searchdialog (as in FileTree) and writes the result to the console for VS to read. This works standalone.

Not sure what is changed in VS2022 that do not allow the dialog to be shown.
I guess at least a timeout can be added, but how is this useful?

Hi @gerhardol, thanks for looking into this.
Are you asking me what the use for this 'Find file' command is? Or whether a timeout would be useful to prevent the crash?

Are you asking me what the use for this 'Find file' command is?

Yes

Or whether a timeout would be useful to prevent the crash?

That would just be a way to limit the impact (more a general change, if the command never works and cannot be fixed then it should be removed).

Me and my colleagues use the 'Find file' command to quickly find any file in the repository by name and open it in VS. We find that, for our purposes, it works faster and more accurate than the build-in search:

We have the same issue, just clicking on 'Find file' crashes VS 2022.
br


Multiple forms of same type in the same page

When you create multiple forms of same type in one page, browser renders CKEditor at the place of first instance of the textarea of first form. because it searches for the id and the id is same for each form (Symfony2 gets data from datatype name).
Instead of calling replace function of ckeditor, it should be a solution to add a class attribute like this:
'attr'=>array('class'=>'ckeditor')
In addition these lines should be removed from ckeditor_widget.html.twig
    <script type="text/javascript">
        if (CKEDITOR.instances['{{ id }}']) {
            delete CKEDITOR.instances['{{ id }}'];
        }

        {% for plugin_name, plugin in plugins %}
            CKEDITOR.plugins.addExternal('{{ plugin_name }}', '{{ plugin.path }}', '{{ plugin.filename }}');
        {% endfor %}

        CKEDITOR.replace('{{ id }}', {{ config | raw }});
    </script>

Just some quick guidance for those facing this issue:
This is indeed a Symfony problem: multiple forms of the same type will have the same ID, which is invalid HTML, and breaks this bundle.
So you need to have different IDs for the CKEDITOR field you use.
There are two approaches I found for this:
For "older" versions of Symfony (not sure exactly when it stopped working, I think it's before 2.7)
You can change the form name, this will also change it's id, and all the related fields. More details here http://stackoverflow.com/a/18732386/183904
For more recent versions of Symfony
Unfortunately the solution above doesn't work anymore, and I didn't find an elegant solution. What I ended up doing was using a random ID for the field in twig:
{{ form_row(myForm.body, {'id': random()}) }}

This doesn't seem to break the form logic, the ID isn't used by Symfony. It was not possible to do this in the form type iself, because if you put your id with the 'attr', the field will have 2 ids (...).
Hope this helps !

@jstoeffler it does help, thank you so much!

Please can you open a new issue if there is a problem about multiple IDs. IMO, the ID is not used by Symfony but instead the name is used. I can override the generated id in order to make it unique regardless the form type building it and so making the bundle happy when replacing textarea by CKEditor.


Upgrade com.github.ekryd.sortpom:sortpom-maven-plugin 2.12.0 -> 2.13.1

This PR contains the following updates:

Package
Update
Change

com.github.ekryd.sortpom:sortpom-maven-plugin
minor
2.12.0 -> 2.13.1

[ ] If you want to rebase/retry this PR, check this box

Suggested commit message:
Upgrade sortpom-maven-plugin 2.12.0 -> 2.13.1

See:
- https://github.com/Ekryd/sortpom/wiki/Versions
- https://github.com/Ekryd/sortpom/compare/sortpom-parent-2.12.0...sortpom-parent-2.13.1

Suggested commit message:
Upgrade sortpom-maven-plugin 2.12.0 -> 2.13.1

See:
- https://github.com/Ekryd/sortpom/wiki/Versions
- https://github.com/Ekryd/sortpom/compare/sortpom-parent-2.12.0...sortpom-parent-2.13.1

Yep, also holds for some other PRs we merged. (We should finalize #4...)

Yep, also holds for some other PRs we merged. (We should finalize #4...)


Github Action for Golang linter

Description
Changes proposed in this pull request:

added Github Action for golangci linter

Related issue(s)

/test pull-compass-manager-tests


BUG: multiplication error when switching order of variables

I've been converting my primes-utils rubygem into Crystal and have been trying to trackdown this bug for a loooong time. :(  The major problem has been getting variable type casting right so the arithmetic operations produce the correct results. I finally seem to have traced one recurring math bug to the method pcs_to_num. I've reproduced this bug now on my native system and play.crystal.org, using 0.26.0. My development system is a System76 laptop, i7-6700HQ.
def pcs_to_num(nom, residues, lte)

        #k: UInt32 | UInt64
        #num: UInt32 | UInt64
        #modk: UInt32 | UInt64
        #modpg: UInt32 | UInt64

        num = nom.to_u64

        modpg, rescnt = (residues[-1] - 1).to_u32, residues.size

        puts "in pcs_to_num: num = #{num}, modpg = #{modpg}, rescnt = #{rescnt}"

        num = 2.to_u64 if num < 2
        num -= 1; lte ? (num |= 1; k = num/modpg) : (k = (num - 1)/modpg)

        #num -= 1_i64; lte ? (num |= 1; k = num.abs/modpg) : (k = (num - 1).abs/modpg)

        #puts "in pcs_to_num: k = #{k}, modpg * k = #{(s = 0.to_u64; modpg.times do s += k end; s)}"
        puts "in pcs_to_num: k = #{k}, modpg * k = #{modpg.to_u64 * k}"

        modk = 0_u64; modk = modpg.to_u64 * k.to_u64; r = 0
        #modk = modpg * k; r = 0
        #modk = 0.to_u64; modpg.times do modk += k end; r = 0
        while num >= modk + residues[r]; r += 1 end

        puts "in pcs_to_num: in_num = #{nom}, num = #{num}, modk = #{modk}, r = #{r}"

        #numout = (rescnt * k)  + r
        #numout = (rescnt * k).to_u64  + r
        #numout = (k * rescnt).to_u64  + r
        #numout = 0.to_u64; rescnt.times do numout += k end; numout += r
        #{numout, r, modk} # {num pcs, r index, num modulus}

        {rescnt * k + r, r, modk} # {num pcs, r index, num modulus}
        #{k * rescnt + r, r, modk} # {num pcs, r index, num modulus}
end

puts pcs_to_num(2_145_848_349, [7,11,13,17,19,23,29,31], true)
puts
puts pcs_to_num(11_037_857_400, [7,11,13,17,19,23,29,31], true)

The problem is the multiplication in the first element of the 3 element output tuple.
If the multiplication order is: rescnt * k + r I get this output.
https://play.crystal-lang.org/#/r/4sgk
in pcs_to_num: num =<PHONE_NUMBER>, modpg = 30, rescnt = 8
in pcs_to_num: k = 71528278, modpg * k =<PHONE_NUMBER>
in pcs_to_num: in_num =<PHONE_NUMBER>, num =<PHONE_NUMBER>, modk =<PHONE_NUMBER>, r = 1
{572226225, 1,<PHONE_NUMBER>_u64}

in pcs_to_num: num =<PHONE_NUMBER>0, modpg = 30, rescnt = 8
in pcs_to_num: k = 367928579, modpg * k =<PHONE_NUMBER>0
in pcs_to_num: in_num =<PHONE_NUMBER>0, num =<PHONE_NUMBER>9, modk =<PHONE_NUMBER>0, r = 7
{-1351538657, 7,<PHONE_NUMBER>0_u64}

When the order of multiplication is changed to: k * rescnt + r I get this output.
https://play.crystal-lang.org/#/r/4sgj
in pcs_to_num: num =<PHONE_NUMBER>, modpg = 30, rescnt = 8
in pcs_to_num: k = 71528278, modpg * k =<PHONE_NUMBER>
in pcs_to_num: in_num =<PHONE_NUMBER>, num =<PHONE_NUMBER>, modk =<PHONE_NUMBER>, r = 1
{572226225_u64, 1,<PHONE_NUMBER>_u64}

in pcs_to_num: num =<PHONE_NUMBER>0, modpg = 30, rescnt = 8
in pcs_to_num: k = 367928579, modpg * k =<PHONE_NUMBER>0
in pcs_to_num: in_num =<PHONE_NUMBER>0, num =<PHONE_NUMBER>9, modk =<PHONE_NUMBER>0, r = 7
{2943428639_u64, 7,<PHONE_NUMBER>0_u64}

So when inputs need to be 64-bit (all unsigned values) I get wrong errors, which, of course, is wrecking havoc in the code from which this method is called, multiple times.
I had been pulling my hair (figuratively) forever before I decided to just see if changing the order of the variables made a difference, and sure enough it does.
And in the first output the first element multiplication is 32-bits, and 64-bits for the second case.
And the really, really, really strange thing is the outputs from the first case gives correct answers in the methods they're called from, but errors for the second case. This has been driving me batty!
This is obviously a bug, as multiplication is supposed to be communicative.

In Crystal, the type of a + b has the type of a (replace + with any operator, lik *).
That means, if a is Int32 and b is Int64, the result is Int32, and of course there's a chance of overflow. If you switch the order, the result is Int64. There's still a chance of overflow but it's less probable.
This will be solved in the future when these operations raise on overflow. Then you will get an overflow exception instead of a wrong, hidden, behavior.
The reason for this type resolution is that:
a += b

is expanded to:
a = a + b

and you want the type of a to remain the same, not change.

(to be clear, this is not a bug, just a missing feature)

And yes, the mathematical definition of multiplication is commutative, but Crystal's * operator is not (at least not completely).
However, a different implementation could be that *, + etc. return the biggest data type of both operands and += etc. would convert the type of the result.
But this is obviously much more complicated and doesn't provide a huge benefit. If you no about this behaviour, it's easy to work with it. Once we have raise on overflow this is even less an issue.

Essentially solved by #6223.

I found the  solution to one set of errors -- subtle, oh so subtle. :-(
Changed this as output:  k * rescnt + r  to this:  (k * rescnt).to_i64 + r
Now just one more (I hope) type casting hell problem to solve.
It would have definitely been better to have generated overflow errors.
I've had to literally debug a who section of calculations code line-by-line to see where the overflow was.
Can you say when #6233 will be incorporated? Next release? In development branch?

OK, now all my test cases pass for this particular function. :-)
I had to change the order of multiplication in 2 other instances AND addition in another to make the larger value be the first operand so the result was of that type.  Now I have to go over all the other methods and create large number test case for them as well.
I wish this had been prominently documented as a gotcha.

Essentially solved by #6223.

The core issue of missing commutativity is not solved. It will just raise an exception at runtime if an invalid result is calculated. That's better than failing silently, of course.

@straight-shoota that's not a bug it's just one of those things that needs to be documented.

The core issue of missing commutativity is not solved

With that argument you could say that raising on overflow is a bug because in math there's no such thing as overflow, numbers are infinite.
This is not pure math, this is programming and there are some differences and limitations with math.
An alternative is to disallow a type with a larger magnitude on the right side. So for example this won't compile:
a = 1_i32
b = 1_i64
a + b # error

That is, we would define Int32+#(Int8), Int32#+(Int16), Int32#+(Int32), but not Int32#+Int64.
In fact, maybe we could always just define T + T, given that something like a + 1 will usually work because of automatic type casts.

I'd be really interested in seeing the diff for restricting addition to self actually. Obviously it doesn't avoid overflow at all, so i wonder if it'd just be more annoying

@RX14 I know this is not a bug. But it is still unexpected behaviour that the operator + is not commutative.
In math, there is actually the same concept as raising on overflow. Each integer type essentially represents a subset of integers, for example Int8 is the set { x ∈ Z | 128 <= x <= 127 }. Because of this, it is not closed under any standard operator. Any result of such an operation can be outside the set and thus not defined or not representable. That's exactly the reason for an overflow exception.

As a user, and coming from Ruby, it was certainly unexpected, non-intuitive, and violated Ruby's POLS (principle of least surprises) to have the fundamental operators +, -, and * not behave as normal commutative operators. This is such a basic expectation of doing math, for the purpose of making programmers lives easier, especially when not used to having to deal with the artifacts of number types and casting, it is essential to prominently documents the consequences of this for newbie Crystal programmers.
Since Crystal is compiled, would it be possible for the compiler to detect the operand types and do the necessary switching in the AST, and then continue on as normal?  With - maybe you would need to do for a - b a negation and add: ~b + a.  The point being take the manual burden off the programmer to have to manually parse code and put that burden on the compiler. Once it's done it's done for everyone.
Also, in a lot of (most?) cases, a programmer won't know from one iteration to the next which variables will be the bigger|smaller in a process, so no mater how the variables are ordered, at some point  an erroneous result will be given. The only possible work around for this, but a humongous PITA, is just to cast all numbers/variables to the largest possible type (which is probably very inefficient from a memory and performance perspective).
In my case, I started trying to translate my primes-utils gem to Crystal starting in 2015, but it was so frustrating (especially back then with the state of Crystal) I just took a break, and came back to it when I felt motivated to try again.  In 2018, I had gotten 90% translated and working, so I just decided recently to drill down into this problem, since it was the last major thing left to get working. In my case I'm lucky, because in the algorithms I'm using I know (mostly) the relative size of the variables|numbers.
And what made the process soooo frustrating was, about 90% of the Ruby code didn't need any syntac changes, it was the unknown unknowns the other 10% of the code that caused all the problems. :-(
So, please consider things from the humble and naive programmers perspective going forward, and follow the POLS as much as possible, and when not possible, just tell us what to expect and how to work with doing things the Crystal way.  If I know what (all) the rules are I can follow them. I can't follow what I don't know.
Thanks! :-)

There is actually an implicit type conversion for Int#+(Float) which returns the float type of the argument.
IMO it would make sense to change operators with only integer or only float arguments to return the widest data type as well. AFAIK this is similar in most other programming languages (for example C, Java and derivatives).
Yes, it will mean that a += b may change the data type of a and that might go unnoticed unless its type restricted. But honestly, I don't see a huge issue with that, it is at least not as weird as (almost) always returning the type of the first argument.

Let's leave this discussion until after we've implemented overflow detection, and then we can properly evaluate whether this is still an issue.

Well, Crystal isn't Ruby.
Expecially numbers. In ruby they're an union of all possible number types, so an operation can be executed again after an overflow is detected on grown types. This is more complex in Crystal because an Int64 is just a 64 bit number, it can't grow (otherwise numbers would be huge, ugly and slow unions).
With raise on overflow on number operators, you'd have those same issues, but it would fail with an exception at runtime, allowing to track issues. I guess it won't be as frustrating as having to deep dive.
Note that using Int64 everywhere in your library could probably avoid the issue altogether —unless you outgrow 64 bit numbers.
@RX14 I'm afraid restricting number operators on self would only end up with manual & laborious casts —especially int32/int64 and sometimes int8/16/32/64 when dealing with hashes, digests, binary protocols... Not very Crystal :-/
@straight-shoota the conversion rules for integer conversions in C are really ugly and complex to predict. See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (page 53). In practice, one should always cast :-/

Another design issue why operators are not commutative is that in order to avoid generating a union as a result of var *= exp, var * exp needs to keep the type of lhs.

@ysbaddaden I'm actually not so sure it's as common as you think. But the only way to find out is to try, and i'm not sure it's worth it.

@straight-shoota For example:
a = 1
b = 1_i64
if condition
  a += b
end
# now a silently is Int32 | Int64, which makes all further operations slower

I think restricting operations for T op U to types where U is "less" than T might be a good solution for this. That is, you can do Int32 + Int16, but not Int32 + Int64.

Now this is interesting. I'm trying to restrict all operations to just T op T (no lesser types, like in Go) and while doing it and adding explicit casts, I found this:
>  4.           registers.address += sequence.minimum_instruction_length *
   5.             ((registers.op_index + operation_advance.to_u32) / sequence.maximum_operations_per_instruction.to_u32)

no overload matches 'UInt8#*' with type UInt32
Overloads are:
 - UInt8#*(other : UInt8)

This is in the code that decodes line numbers. Of course UInt8 multiplied by an UInt32 is likely to overflow and give an incorrect error. Maybe it's a bug...
Anyway, I'm trying to do it but it's never-ending. There's so much code we'll have to change. I don't know, maybe raising on overflow is simpler: it's more flexible. The only problem is that you'll find it out at runtime, not at compile time. However, if we only allow, say, T op T, then Int32 + Int32 can still overflow, and the compiler won't detect/prevent that. It's something that can only be detected at runtime.
We'll see, once we have automatic overflow detection, if the dwarf code fails sometimes, and maybe with that we can fix the line number offset that we have from time to time.

On one of the versions of overflow I needed to change the dwarf parser. Maybe what you point was the issue.
I don’t think is there is a need to restrict over same types. Runtime overflow will always be needed for native ints.

@asterite how much performance are we talking about? I assume the percentage of performance gained is probably not worth the effort to offset the need having to deal/worry with int8/16/32/64 and which kind of integer they are using.  It also makes the application/library having to deal with these kind of edgy stuff, which imo is bad. 2cents

Closing because this will be solved with overflow checks.

@asterite Overflow checks don't provide type safety. They help to discover the problem but only if it happens to overflow (in the specs or other regular run code).
This might be good enough, sure.
But what about changing the allowed types to perform mathematical operations? This would give more safety. Still not 100% because operating in two values of the same type can also overflow.

@straight-shoota also multiplication isn't safe unless you double the width of the largest type, which is extra confusing. It's not 100% on avoiding overflows, it's not even 50%. So it's definitely not worth it to even attempt to enforce this in the type system.

@straight-shoota You can try changing the std/language to do that, send a PR and we can review it.


!smoke !flare and !illumination

Adds following commands:
!smoke
Create a smoke marker with the specified color on the map marker. The marker will last 5 minutes.
If no color is given, a green smoke marker will be created.

color fuzzy match string for a color name, can be a partial color name

syntax
!smoke <color:optional>

available colors:
green
red
orange
white
blue

examples
Create red smoke:
!smoke red

Create white smoke with partial color name:
!smoke wh

!flare
Fire a flare with the specified color on the map marker. One flare will be fired into the air.
If no color is given, a green flare will be fired.

color fuzzy match string for a color name, can be a partial color name

syntax
!flare <color:optional>

available colors:
green
red
white
yellow

examples
Fire red flare:
!flare red

Fire white flare with partial color name:
!flare wh

!illumination
Drops an illumination bomb from 500 meters AGL on the map marker. Illumination bombs drift with wind in the mission.
syntax
!illumination

a short version of the command is also available:
!illum

examples
drop illumination bomb on map marker:
!illumination

Using stricter types now. Thanks also to Fergie for helping out on Discord.


Updated UG

Fixed bugs from PE Dry Run regarding the Listing class and its commands.
Updated UG for addL, editL and deleteL commands.

Codecov Report

Merging #152 (b5f4797) into master (671a278) will increase coverage by 5.05%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master     #152      +/-   ##
============================================
+ Coverage     35.51%   40.56%   +5.05%
- Complexity      416      478      +62
============================================
  Files           134      134
  Lines          2678     2692      +14
  Branches        345      347       +2
============================================
+ Hits            951     1092     +141
+ Misses         1670     1528     -142
- Partials         57       72      +15

Impacted Files
Coverage Δ

...u/address/logic/commands/DeleteListingCommand.java
0.00% <0.00%> (ø)

...edu/address/logic/commands/EditListingCommand.java
0.00% <0.00%> (ø)

...address/logic/parser/EditListingCommandParser.java
0.00% <0.00%> (ø)

...seedu/address/model/listing/UniqueListingList.java
25.49% <0.00%> (+7.84%)
:arrow_up:

...seedu/address/logic/commands/AddPersonCommand.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...du/address/logic/commands/DeletePersonCommand.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...u/address/logic/parser/AddPersonCommandParser.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../address/logic/commands/ViewPersonListCommand.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ddress/logic/parser/DeletePersonCommandParser.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...eedu/address/logic/commands/EditPersonCommand.java
0.00% <0.00%> (-97.02%)
:arrow_down:

... and 27 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


test: simplify arm integration tests

Simplify ARM integration tests by removing the need for an -org.json original JSON file but re-using the initial content of the ARM template file as 'original contents' which can be used during the tear-down of each test, keeping a clean environment after each test.
Closes #279

@stijnmoreels  this test seems to be failing:
[-] Arcus ARM integration tests.ARM injection.Replaces absolute file path with file contents as JSON object (linux) 51ms (49ms|2ms)
 CommandNotFoundException: The term 'OutFile' is not recognized as a name of a cmdlet, function, script file, or executable program.
 Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
 at <ScriptBlock>, /home/vsts/work/1/s/src/Arcus.Scripting.Tests.Integration/Arcus.Scripting.ARM.tests.ps1:83

Aha! Was using OutFile and should've been Out-File. 😄 Couldn't test this locally as I'm running Windows.
Thx for the snippet! 👍


bug in parser

It seems that there is a bug somewhere in the binary parser.
I have a wasm file foo.wasm that I obtained from the WasmCert binary printer.
It runs fine in nodejs but the interpreter from WasmCert fails with:
wasm_interpreter: syntax error
For the corresponding .wat file see here.

Setup to test the same thing:
The gist also includes a Coq file foo_wasm.v that contains the byte sequence of the same wasm file, obtained using this python script here.
when compiling foo_wasm.v the parser returns None. (line 25, second file here)

Thanks for the report! The original issue is due to a mistake in the binary parser (which is unverified and very under-tested) in dealing with the locals field within the code section. The provided module is successfully parsed after the fix. In addition, further testing reveals some other minor issues on the pretty printer, which tries to convert integers to nat before printing them (oops). Both of these have been fixed in #17 .
Please note that the current Coq formalisation uses a naive list memory representation, therefore allocating the memory with an initial size of 100 pages is not recommended (will likely cause it to crash) -- it is possible that we add another memory representation in the future, though.
The module provided (after tweaks) is tested and can now be run correctly ($main_function returns i32.const 36), and the byte list can now be parsed in Coq as well.

I can confirm that it works now, thanks for solving it that quickly!
For testing, I added a roundtrip (printing to bytes and parsing) to the end of my compilation pipeline, and my benchmarks run through again. (I only use basic WebAssembly functionality, in any case I'm happy now.)
Thanks for the hint with the memory. That was a remainder, I don't actually need to run programs with that amount of memory.


Loaded system config

I split up all rest-api configs into loaded and default systems. Also i moved all important settings into one place at the sppmon.py file, as well as giving a small disclaimer.
I've labled the argument --minimumLogs as depricated and introduced the new arg --loadedSystems. This new arg-group should make the new settings more understandable.
I'd like to remove --minimumLogs within the next version (or the release). For now, both args do exactly the same to not break running systems.
@baslerj Please test it in your own enviroment. I think I've already set up appropriate settings, but you might need to finetune some settings. Those changes might be a good recommendation for other loaded systems.

Hello @baslerj
Thanks for the hint, I've modified the description but maybe you could also improve it.
Using --loaded_systems directly is like the easy way, if you dont want to think a lot.
If you do want to make manual finetuning and changes, i've wanted to give some assistance by adding a priority list.
The steps later in the list are more radical or have a bigger drawback, due which i want to have the user change other variables first.
--loaded_systems would fit in at the step of switching to SUMMARY-logs only.
Now I've split this into critical and minor spikes with recommendations for each situation. I'm still not sure what is the best way for this describtion, I'm only sure that we need some kind of.

Recent updates look good.  I have successfully tested the updates in our large SPPmon production environment.


Can't run the app

Can't run my app. I have cloned it according to the instructions. But don't know where to put the config.js . Can you explain me in details what are the exact steps.

You do realize that this is a module for Magic Mirror, not a stand-alone app, correct?

Yeah got it. The issue is resolved.
Thanks


DS-590 new icons for Pega sites

Jira
https://pegadigitalit.atlassian.net/browse/DS-590
Summary
New icons added to represent the network of Pega sites.
Details
SVG files are added for the new icons.
How to test
Run the branch locally and check out the icon element docs. Make sure all new icons are rendering without any kinks.
Release notes
Visual changes
customer-service icon has been updated to match brand icon. The double chat bubbles are slightly different from before.

@danielamorse Fixed.


All access through widgets, both new and old, reports "Search Failed, try again!"

All widgets I have for "Resvägar Genväg" always fail now when invoked.
Both old shortcuts and newly created, ones.

Sorry for the late response to this. This should now be resolved, this was caused when updating the upstream data source and was resolved in the backend.
Thanks!


Occam2d fixes

Various updates to Occam2d so that it works and gives correct results. Seems to be failing tests when building environment for testing. Not sure why.

OK- got the env to load ok. Will look into failing tests.

@alkirkby looks like we just need to change the number of significant digits in the test, maybe something like 5 sig figs.
Looks like the tests are

@alkirkby, I updated the tests so they pass.

Awesome thank you @kujaku11 and sorry I didn't get to this. I did change some things in generate_profile so that the 0 point in the profile is a perpendicular projection of the first site, I hope that didn't break anything else.


Updates based on changes in azps 7

Docs Build status updates of commit 9a50f13:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-conceptual/azps-7.0.0/azps-msgraph-migration-changes.md
:white_check_mark:Succeeded
View (azps-7.0.0)

docs-conceptual/azps-7.1.0/azps-msgraph-migration-changes.md
:white_check_mark:Succeeded
View (azps-7.1.0)

docs-conceptual/azps-7.1.0/migrate-az-7.0.0.md
:white_check_mark:Succeeded
View (azps-7.1.0)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


No clear migration path for lift-json library (Scala 2.10 -> 2.12)

Upgrading lift-json library from Scala 2.10 to Scala 2.12 seems more difficult than necessary. The problem is that there is no common lift-json version that is released for both Scala 2.10 and 2.12.
The highest lift-json library version for Scala 2.10 is 3.0-M1 (https://search.maven.org/artifact/net.liftweb/lift-json_2.10),
the lowest version of the library for Scala 2.12 is 3.0.1 (https://search.maven.org/artifact/net.liftweb/lift-json_2.12).
Not only there is no common version but the above versions seem to be incompatible (e.g. value findField is not a member of net.liftweb.json.JsonAST.JValue), so the semantic version convention is also broken :(
Inspiring article: https://mungingdata.com/scala/maintenance-nightmare-upgrade/
In short you can make life much easier for developers that are "in the tail" and only now perform upgrade to Scala 2.12. If only you release one common version targeting both Scala 2.10 and 2.12. That would allow for smooth migration where you first change only Scala version and make sure that everything works, and then move on to upgrading libraries one by one.

Hi there. I hear you and am sympathetic to the pain point here, but at this point Lift is getting resuscitated after a long hibernation, and we're not likely to go back and make 3.0.1 compatible with Scala 2.10. I remember being a part of the original discussions to drop 2.10 support, but I don't entirely recall why we did that.
In any event, we're looking heavily at decomming lift-json entirely as a part of the recent revival efforts. You may want to look at json4s, which was forked from lift-json back in the day.


Formulation user stories

@HPI-SWA-Teaching/2017-student-team-01 Do we want to write all our user stories in the "As a ... I would like to ... in order to" form?

Is there a need for another form? I like it because it captures the user, the aim and the intention.

I like it very much as it is

Will be closed after reaction of @Lariiii and @Blubl

I approve it, too.

@bjrne "Is there a need for another form?" No, but they aren't in this form

They aren't in this form on the wiki wiki/User-Stories

@Lariiii Do you want to do this (after digitalising our cards)? (I already formulated some on the closed issues)

Yes, I will do that.

I am not sure what the correct user story formulation for "7. Show difference between selected commit and ancestor" is. Any ideas?

Something like that https://github.com/HPI-SWA-Teaching/SWT17-Project-01/pull/29/commits/497840a82a291a59bd8b7a496fb3ec8c16cd4a92


⚠ ClamAV has degraded performance

In a2a6969, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 71 ms

Resolved: ClamAV performance has improved in 29ddc70.


Created a Different forms for registration student and for recruiter. Ready for review.

This PR comes after the basic registration that we made. and its goal is to separate between the student and recruiter registration.

The pages look great Yarin.
When a recruiter signs up does he have the option to choose an existing company and as well to register a new company as well ?

for now, it's only an existing company but you have a point.  maybe for the demo that's good functionality and we will do it later for our final project?  or do you think should i do it for the demo?

for now, it's only an existing company but you have a point.  maybe for the demo that's good functionality and we will do it later for our final project?  or do you think should i do it for the demo?

@YarinBou i think for now it's ok but if we find a quick solution to make an option to create a new company it's better. I'll be home soon and think of a way to do that as well

sure, that's because I'm already getting a hard time creating both user and recruiter in the same form, so to add up a company registration in the same form can take me some more time, check this out and we will talk later.

from my first PR about the registration, you're (@ifireball) keep telling me, again and again, you can't deliver it for the demo, even tho everything works in the first PR about it. and everything working now as well.
the last PR about it was approved without tests. I don't see how a "significant amount of logic" is that's why I think the test's request at this point is just you making your point and looking for reasons for this PR will not be approved for the demo. without an actual reason.
all the other teams in the course sent a registration page without any tests and no one made from this simple action such a big deal.

Application logic needs to have tests, this is an integral part if the demo requirements. If other teams did not implement tests for their features, they may not be able to present them.

not just other teams, also all of our latest PR's as been sent and approved without test's and also all of the PR's that still waiting are without test's that seem a bit odd that just for my registration page's 4 day's before the demo this is the first time
we have been asked to do them.  this is my feeling that you are specifically looking for this functionality to not succeed.
maybe behind the scenes that is not what you thinking about, but this is the feeling I'm getting from you in this work.

I'm sorry that you feel this way but:

It's your responsibility as a team to ensure your code meets the requirements even if we (the reviewers) forget to remind them to you
If far easier for me to avoid reviewing stuff and just merge blindly. Would you rather I do that instead of trying to teach you to be a better engineer?

hey @ifireball is this the kind of test that you want to see?
@pytest.mark.django_db def test_signup_form_for_student_loads_correctly(valid_student_data,client):     response = client.post("/registerStudent/")     assert response.status_code == 200     form = response.context["form"]     form_initial_data = response.context["form"].initial     assert isinstance(form, StudentRegistrationForm)
to check if the system displays the right form?

See the tests im PR #60

See the tests im PR #60

yes i do the form check according to this PR

Please let us know once the issues and conflicts are resolved it's ready for re-review @YarinBou

hey, @guyy13 and @ifireball I'm ready for re-review.

That was make sense if the login was for both in the same place. But - we make two different forms and functionally for those models and that's why we splitting those tests into the right models.


Customisable table sizing and column widths for data tables

Summary
When implementing a data table, a developer needs to be able to specify column widths and row heights so that the table view can be customized.
💰 User value
Important to allow data to be displayed optimally.
📚 User Stories
If relevant, describe the high-level functionality as user stories.
As an ICDS user:
I need to be able to specify column widths and row heights
So that my table can be customised.
📝 Acceptance Criteria
If relevant, describe in full detail the different interactions and edge cases that the component or patterns needs to fulfil.
In general the process of sizing a data table and its columns should follow this process:

Size the data table, either fixed, or auto width.
Size any fixed columns and leave others as auto width.
Remaining auto width columns fill remaining space equally, and if no remaining space, then auto-width columns are set to the default 128px, and then table is horizontally scrollable. (Will need to re-review this)

Table sizing
Given that a data table is being implemented
When setting its properties
Then its full width can be defined either as a fixed value, or it can be set to auto width which is the default value.
Given that a data table has been provided a fixed width
When its columns' summed widths exceed this fixed width
Then the data table should allow horizontal scrolling.
Given that a data table is being implemented
When setting its properties
Then a minimum width and maximum width can be specified,
And an auto-width data table should not exceed these limits if specified.
Given that a data table is set to auto width
When its columns' summed width exceed the maxWidth or available space for the data table (either viewport or container)
Then the table should allow horizontal scrolling.
Column widths
Given that a data table is being implemented
When setting its properties
Then an option exists to specify individual column widths.
Given that a column in a data table exists
When no sizing information is provided
Then it should default to autoWidth.
Given that a column is set to autoWidth,
When its size is calculated
Then a min-width of 64px should not be exceeded
And the table should horizontally scroll if all auto-width columns can't be included.
Given that a table exists
When setting properties
Then an option exists to change the minWidth for columns.
Given that a data table is being implmented
When column width is being specified as autoWidth
Then the remaining available space after fixed size columns are accounted for is equally divided between all columns with 'autoWidth'
Given that a data table is being implemented
When column width properties are being specified
Then a fixed value for column width can be specified either in px, rem, %.
Given that a data table is being implemented
When setting its properties
Then an option exists to specify individual row heights.
✏ Designs
If there's a Figma design file (or other mock-up), include it here.
## 🧾 Guidance
If there's written guidance or documentation, include it here.

Paused development as we prioritise truncation  #1003

Blocked by the above issue

Some initial work has been carried out on this task which can be found in canary/data-tables-column-width. The column widths are set within the column array.

@GCHQ-Developer-299 has looked over the current functionality in canary/data-tables-column-width and the ACs as a sanity check. We have agreed that this current ticket is now 3 story points. The remaining work is:

Writing Cypress tests

Remaining auto width columns fill remaining space equally, and if no remaining space, then auto-width columns are set to the default 128px, and then table is horizontally scrollable. (Will need to re-review this)

Given that a data table is being implemented
When setting its properties
Then a minimum width and maximum width can be specified,
And an auto-width data table should not exceed these limits if specified.

Given that a column is set to autoWidth,
When its size is calculated
Then a min-width of 64px should not be exceeded
And the table should horizontally scroll if all auto-width columns can't be included.

Given that a table exists
When setting properties
Then an option exists to change the minWidth for columns.

Add guidance issue

Based on the min/max-width spec, the behaviour on a table-cell is undefined: https://www.w3.org/TR/CSS21/visudet.html#propdef-max-width. As a result of this, the min/max-width requirement is not part of this ticket.


No metadata.yaml file generated

Hi,
I am currently trying to implement the rosbag2 functionality inside one of mine component manager (with intra-process enabled) to save huge pointcloud data.
I was able to use your packet and it is working very well but I am facing a bug, while the filte .db3 is correctly generated no metadata file (.yaml) is created when i kill the process.
I have managed to find a workaround to this problem by using the command "ros2 bag reindex" but still, I am curios if you were facing the same problem.
Currently working using ROS 2 Humble on Ubuntu 20.04.

Hmm, I have never seen that, but then I have only tested it on Galactic/Ubuntu 20.04.
I think Humble switched away from sqlite to a different file format. Care to try and see if that helps?
Question: how do you run Humble on Ubuntu 20.04? I went through the pain of upgrading to Ubuntu 22.04 to accomplish that...

Hi, we discovered the stop() function was added in rolling (and thus iron) only three weeks ago and not backported in humble...
For humble on 20.04: we are on a source build, and you have to fight a bit with python versions and QT stuff, mainly. Thanks to Nvidia Jetpack not being aligned on the last Ubuntu LTS! 🥲

I have a xavier on Ubuntu 20.04 as well so I'm running galactic there but that is already getting long in the tooth.

Hi @Fixit-Davide, @roncapat ,
I followed  your patch for adding the stop_recording service. However, triggering the stop_recording service also killed the application that includes the recorder in the launch file and by consequence, the metadata.yaml is empty.
Should I also re-build the rosbag2 from source for humble on the Nvidia Jetson Orin NX since I followed the instruction for installing the ROS2 Humble here : https://qiita.com/ntrlmt/items/50b49fb43b4439ac165b
Thanks and best regards,
Khang

Hi @l4es, on an Orin platform my suggestion is to go with a full Jazzy build from source, it will include support for rosbag2 composition out-of-the-box. Since I already use Iron/Jazzy on my Jetson Orin, I unfortunately won't be able to reproduce your issue on Humble and help you solve the error you see.

Hi @roncapat,
Thanks for your comment. In the meantime, I was able to clone and recompile the rosbag2 from source (branch humble) and re-test the start_recording/stop_recording services, it works like a charm without killing the app or the recorder node.
Best Regards,
Khang


Improvements in License File

Hey @yannh,
Greetings. Our team is trying to import and use Kubeconform for some validation part in our codebase. However, the Apache License file that has been added to this repo is not a proper Apache License file, due to which our code pipelines are not able to understand the license and checks are failing. We are unable to move forward until the license file is proper. Could you please add an appropriate Apache License 2.0 License file? It would be super helpful.
Thank you so much.
P.S.: Here is a link to sample Apache License 2.0 license file for your reference. I hope it would help. In case of any query, please do let me know.

Fixed :heavy_check_mark:


Enemy detection improvements

[x] hacker's robot should be detectable, just like the agent (but slower)
[x] tweak the detection rate - it should be faster
[x] change detection rate based on agent's distance and stance (standing / crouching)
[x] check if enemy can just stand, without walking (and if we can't, then implement it)
[x] make a lot of cvar's for detection rate's

Zrobione, zamykam. Jak będą jakieś problemy to naprawię.


some laptops does have TPM , but does not have finger reader

Without Fingerprint reader or  face id sensor camera , then there is no use windows hello .
Eventhouth  the  laptops have  TPM , In this  case , users can lock the harddrive with bitlocker using tpm
Thanks for your article

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

ID: c34dbafa-df3c-a5a5-32d5-2ce152893534
Version Independent ID: cebdd9a6-45d7-6306-373c-7d31121f9e16
Content: Why a PIN is better than a password (Windows 10)
Content Source: windows/security/identity-protection/hello-for-business/hello-why-pin-is-better-than-password.md
Product: w10
GitHub Login: @DaniHalfin
Microsoft Alias: daniha

Fido 2.0 security keys would be an option here :-) check out this article: https://www.microsoft.com/en-us/microsoft-365/blog/2018/04/17/windows-hello-fido2-security-keys/

yes sir, I already read the tpm 2.0 article before posting here.  I concluded that without finger print reader, users still able to lock harddrive using bitlocker. I clearly mentioned.
Thanks for your reply

@officedocsbot assign @jvsam

Hi @RAJU2529, thank you for engaging with the community here for the docs.
The product teams are always looking for user feedback to help improve your Windows 10 experience. They would love to hear your suggestion with regard to Windows Hello.  Please add your voice in User Voice.
Also, please note that others may have already made a similar request before, if so, you can add to it or open a new one.
We will now close this issue. If there is anything in this article that you think should be added or edited, and is supported by the current product, please let us know or you can re-open this issue. We always welcome suggestions and feedback to improve the docs.

officedocsbot close

@officedocsbot close


Create pull_request_template.md

Created a template for pullrequest, and link to survey for new contributors
@elheffe80 @garroadran @B-Souty, would one of you be interesting in reviewing my pullrequest?

Nice! I'll have a look at this later tonight.

The underscores are here to make the text bold. You can check the rich version of it on the "Files changed" tab.
I would add that on line 1 we should maybe make it required to at least give the issue number instead of giving the choice between the number and the description. With Github markdown, it's easy to write '#' followed by the issue number and it automatically creates a link. like so: #55
This will make it easier for everyone to know right away what the PR is about.

Great suggestions.
As @B-Souty mentions, the underscores are to make the text bold in markdown. Otherwise I agree with all your suggestions, and I'll make the appropriate changes :)
Also a quick sidenote. When you review, it is possible to add comments to the document you are reviewing, just hover by the line number, and a little blue box with a plus sign comes up, for you to type your comment for that specific line.

Noted on all the above! Thanks for the clarifications, guys.

Hey @garroadran and @B-Souty I have integrated your suggestions, will one of you take another look and approve if you think it is ready. If not, let me know how I can approve it. Thank you :)

@garroadran @B-Souty would one of you see if the new version is ready for approval, when you have time? Have a nice weekend :)

I would like to point out that using "you guys" can be perceived as exclusive language. I hope for this community to feel welcoming to everyone, so I would like to encourage contributors to avoid gendered language when addressing other contributors. Maybe consider "y'all", "the rest of you", "others", etc. in the future. Our code of conduct states that we want to be using welcoming and inclusive language.


Fix blank newline on empty examine groups

Construction always grants a blank newline even if it not currently constructing.
Changelog
:cl:

fix: Fix blank newlines on examine tooltips (e.g. tables).

fixes https://github.com/space-wizards/space-station-14/issues/32158 ?

fixes #32158 ?

Fixes the wall one, need to check the others.

Others need https://github.com/space-wizards/RobustToolbox/pull/5308 for a better fix so.


Fix: instead of awaiting page load, discard error from page pre-emptive closing

📦 Published PR as canary version: 0.7.6--canary.19.891f0cd.0

:sparkles: Test out this PR locally via:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

I don't think this is truly needed, will close this goes green:
https://github.com/storybookjs/storybook/pull/21241


Revert "python: docker: 2.7.0 -> 3.0.0"

Motivation for this change
pythonPackages.docker isn't compatible with docker-compose 1.18 and
causes severe breackage when running docker-compose up --build.
See https://github.com/docker/compose/issues/5685 for further reference.
This reverts commit 2a8a058a217f286e562a8c8cc5d112f9d614dfeb.
Things done

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

[x] 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 nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

nox-review fails because of pythonPackages.smart_open which is broken on master as well.


Could not load file or assembly 'OmniSharp.Stdio, Version=<IP_ADDRESS>

Environment data
dotnet --info output:
Starting OmniSharp server at 11/2/2018, 12:40:43 PM
Target: d:\FProjects_WorkSpace\TravelApp\TravelApp.sln
OmniSharp server started.
Path: C:\Users\SenthilkumarV.vscode\extensions\ms-vscode.csharp-1.17.0.omnisharp\1.32.6\OmniSharp.exe
PID: 9556
System.IO.FileNotFoundException: Could not load file or assembly 'OmniSharp.Stdio, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'OmniSharp.Stdio, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
at OmniSharp.Stdio.Driver.Program.<>c__DisplayClass0_0.b__0()
at OmniSharp.HostHelpers.Start(Func`1 action)
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
[ERROR] Error: OmniSharp server load timed out. Use the 'omnisharp.projectLoadTimeout' setting to override the default delay (one minute).
VS Code version: 1.28.2
C# Extension version:  1.17.0
Steps to reproduce
Expected  behavior
Actual behavior

Path: C:\Users\SenthilkumarV.vscode\extensions\ms-vscode.csharp-1.17.0.omnisharp\1.32.6\OmniSharp.exe

is this the actual path it prints? there are 2 slashes missing (in front of .vscode and .omnisharp).
Anyway, looks like the extension download was somehow corrupt. Could you try navigating to C:\Users\{user}\.vscode\extensions\ms-vscode.csharp-1.17.0, delete the whole folder, and reinstall the extension again?

I had a similar error and deleting the whole folder then reinstalling worked for me.

@svsenthil84 Did reinstalling help?


RedirectManager: problems with non-english locale

I am testing right now on a Linux system with LANG=de_DE.UTF-8. When running the unittests I get a failure at
java.lang.NullPointerException: temporal
	at java.base/java.util.Objects.requireNonNull(Objects.java:246)
	at java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1838)
	at java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1817)
	at com.adobe.acs.commons.redirects.models.RedirectRuleTest.testCreateFromResource(RedirectRuleTest.java:51)

Changing the test to use "11 Januar 2021" as  untilDate the test works. So this is test has a problem with the locale.
But going further, it should be validated that RedirectRule functionality also works independently of the underlying locale (not sure if this is the case). Just looking at the code I don't find anything, which enforces to use a fixed locale.
ImportRedirectMapServletTest fails for the same reason.
(Anyway, is it really required to define the untilDate as a string? Isn't it possible to use a date within JCR and map that to something which doesn't need the parsing from a String?)

I confirmed the issue.

Build is locale-dependent and only works with the EN locale.
The UI saves dates as localized strings. this can end-up in a list of redirects edited from different locales, e.g.

05 abril 2021
05 janvier 2021
05 января 2021

which the backend code won't be able to parse.
I agree it makes sense to save dates as JCR dates. Fiddling with strings is not to be relied on.
Also, it will be more flexible. So far the code rounded the dates up to the next day minus 1 second e.g. when you select a 'January 5, 2021' the code treated it as 'January 5, 2021 23:59:59'. It is not obvious and there can be cases when users will want to set exact time instead of implied 23:25:59.
The patch is coming. I'm going to merge it into https://github.com/Adobe-Consulting-Services/acs-aem-commons/pull/2564/

the fix is in https://github.com/Adobe-Consulting-Services/acs-aem-commons/pull/2564 waiting to be approved

The fix was merged into master


data_lake shared key auth improvements

@thovoll, please reopen when you are further along. 😃

@cataggar it's a draft PR 😃


error: flake '...' does not provide attribute '...activationPackage'

Hi. Today I've tried making a new build with flakes, and I've come across the following error:
$ nix flake init --template github:t184256/nix-on-droid#minimal
$ nix-on-droid switch --flake .

Building activation package...
error: flake 'path:/data/data/com.termux/nix/files/home/minimal' does not provide attribute 'packages.aarch64-linux.nixOnDroidConfigurations...activationPackage', 'legacyPackages.aarch64-linux.nixOnDroidConfigurations...activationPackage' or 'nixOnDroidConfigurations...activationPackage'

I've tried with all the templates in this repository, and plus my custom configs. None worked.
My current config (without the flakes) is also pretty minimal and contains nothing but vim, git and flakes experimental settings:
{ pkgs, ... }:

{
  environment.packages = with pkgs; [ vim git ];
  nix.extraOptions = ''
    experimental-features = nix-command flakes
  '';
  system.stateVersion = "22.05";
}

A fresh installation of the app didn't change anything as well.

Thank you so much for your attention. It indeed works with the latest bootstrap that you've provided. Please forgive my reckless behaviour. I should've checked the older branches' README first. I'm so sorry for stealing your time for non-important stuff.
But the templates still have a tiny little problem that I would like to mention:
The templates use the release-22.05 branch as nix-on-droid input, which requires the config argument, but the code in the template uses modules argument instead of config. This causes the following problem.
error: 'nixOnDroidConfiguration' at /nix/store/wn8d0db2zmskrsnvhvzqcik0cn3v9x9h-source/flake.nix:29:9 called without required argument 'config'

    at /nix/store/m9zdv704p6jq1n1bff7qx4n0jk1wq953-source/flake.nix:21:40:

        20|
        21|    nixOnDroidConfigurations.default = nix-on-droid.lib.nixOnDroidConfiguration {
          |                                       ^
        22|      modules = [

This doesn't occur when the input branch is master instead of release-22.05. I guess this isn't that urgent and people can fix it themselves maybe, but I wanted to point it out anyways.
Again, thank you so much for your help. I'm so sorry for bothering you for nothing. My issue has been solved.

No worries :)
Oh that's a good catch. But because the release of 21.11 will happen in a few days, we can probably wait for it and then bump all usages of 22.05 to 22.11 and then it just works.

My bad. I've updated https://nix-on-droid.unboiled.info/bootstrap/bootstrap-aarch64.zip, which had been previously updated on 2022-10-03.

What do you think about uploading latest zipball as part of the pipeline to reduce manual stuff like this? @t184256

I'm not comfortable with granting permissions for that to pipelines.

Fixed with #234


Fixed link to UWP sample repo

Github location has changed. Updated link

@jkewley : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@jkewley Thanks for the fix!


return Result of conversion?

Hi, first off thank you for this amazing repo!
I'm noticing any unsupported html get set to an EMPTY_CHILD_TYPE and likewise there appears to be some removal if I'm reading correctly.
How do you feel about supporting a Result<String, Error> return type, where Error could be specific to this library? The benefit is that it would support guaranteeing content is expected or warn the user if the conversion is unsupported.

Hi @evbo, thanks for the kind words!
The library attempts to be quite robust in its treatment of unknown inputs. Unmappable inputs will simply be omitted from the final output ADF document. This way the conversion will always be able to complete to some extent, it will just end up missing any components that could not be appropriately mapped.
Changing the signature to Result<String, Error> in this case could be a little misleading as we wouldn't ever follow the error track, in the worst case, where no mapping was possible, the output document will simply be a string containing an empty ADF document.
Does that make sense?

Hi thank you, the reason errors are useful is because imagine you are parsing Jira issues and are reading pre-existing content. Then you use this library to convert html versions back to ADF but content is missing that was unsupported. That error would be hard to catch. I agree, if empty then it's obvious conversion failed, but what if just a tiny piece is missing? That's too much risk to take with a production system not knowing if information was lost.
All the same, excellent work glad this is here and thank you for the contributing to such a niche. Atlassian's conversion utilities (javascript) have similar bugs where super/subscript content isn't correct and with no notice given.

I've been using this library in development/experimentally. Essentially, the flow looks like:

use this crate to read ADF from Jira and convert to HTML for display
user makes some changes to the HTML (in rich text editor)
use this crate to convert HTML back to ADF
use this crate to convert the ADF to just produced BACK to HTML
display this latest copy of the HTML to the user and ask them to confirm their changes
If they cancel, use Atlaskit's javascript libraries to convert the orignal HTML in step 2 into ADF (slower)

9 times out of 10, the content is fine. But whenever there's a failure, the user has to be sure that content wasn't something valuable. Atlaskit's javascript libraries are older and so naturally they have more compatibility.
Basically, it would be awesome if this crate returned Result so that it didn't require inspection by the user for what might be missing.

Hey @evbo
Can you please share some example input HTMLs, output HTMLs (actual vs expected) that demonstrate the issue?
It's been a while since I've revisited this code, but from what I recall, it attempts to convert everything encountered in HTML (i.e. there are no elements intentionally skipped, rather some elements might be incorrectly classified as text types) so there is nothing to report as intentionally missing, it's more likely to be a case that the conversion performed a bad mapping between an HTML element and an ADF content type.

I will try to next a failure occurs, but they are rare. Here is where you remove content
If you instead returned a failure as soon as illegal marks were encountered, it would remove the content being destroyed.

Hey @evbo
I am closing this issue due to inactivity. Please feel free to reopen if there is a specific example you are encountering where important content is being lost due to conversion.


Allow dashboards to served on public URLs

It is desirable that the new QHub dashboards allow the user to share them in 2 ways:

In a pubic URL without the need for login, as a panel app for example. The aim is to allow users who don't have access to JupyterHub to access the dashboards easily from a URL.
Privately but with reduced permissions. The goal here would be to allow users to visualise the boards but have no access to JupyterHub for example.

@dharhas just collecting the thoughts from the brief convo we had at the meeting today. Feel free to edit/rewrite this ticket as wished :)

Number 2 makes a lot of sense, where other members of the same 'single sign on' directory may be non-technical users internally who wouldn't want or be allowed to start their own Jupyter servers or dashboards. There are some features of ContainDS Dashboards already that can be brought into QHub.
Number 1 (public) would be technically possible and fairly easy, but I'm not sure it's advisable. If the dashboard is to be shared with the general public, JupyterHub may not be the best way to do it. The URL will be via /user/dan/dash-panelapp or similar, and serving from a user's workspace - so the user would need to be careful not to change files inadvertently. The resource configurations (memory etc) suitable for JupyterLab or a dashboard with a contained set of users is unlikely to be the right size or setup for a public deployment of an app (lacking any load balancing or scalability).
Please could you explain more about the use case? Is it (a) a long-term app deployment that will be shared on Twitter and linked from their website, and should be carefully source controlled, or (b) basically the same as the number 2 colleague/client sharing idea except it's not sensitive and some of the people who need to access it aren't in the single-sign-on directory, and it's probably easier to send a public link than to add them to SSO.

This still needs active discussion


Examples in the 15-minute series link to old KIE repo and are 404ing

When doing the 15-minute examples, several are 404-ing with the move to the Apache-incubator repository. This can be seen in https://www.ibm.com/docs/en/ibamoe/9.0.x?topic=started-orchestrating-decisions-rules-in-15-minutes which points to https://github.com/kiegroup/kogito-examples/tree/stable/kogito-quarkus-examples/process-business-rules-quarkus but this will return a 404 on the particular identified project. This should be at https://github.com/apache/incubator-kie-kogito-examples/tree/stable/kogito-quarkus-examples/process-business-rules-quarkus
The linked project should probably also be to a particular branch that uses the IBM build of Kogito for said example versus the stable branch using most current.

Issue migrated to JIRA: https://jsw.ibm.com/browse/DBACLD-146271


Make Image Filter Application

Because every photo deserves a little drama!
Create an app that applies different filters (black & white, sepia, invert colors) to an image.

I would also like to contribute to this if possible. @sumanth-0


PE-4943: Cyclic navigation for image preview in-app

--- Releases ---
Android release: https://appdistribution.firebase.google.com/testerapps/1:305132849030:android:6cf0cd5ec064fad3ffce07/releases/6vfl8a2s9qg18

The latest commit (pending ATM) addresses the uncaught exception on logout for JSON wallets.


Prevent FixedForeground scaling

Currently, if the scroll view is at the top when user tries to scroll to the top again the image will scale with the FixedForeground element. Can I disable the scaling for the FixedForeground element? So only the background image is scaled

Yes, I stumbled upon same issue. But somehow the arrow in the Dr.Who example is not scaled but still fixed. Wonder how to keep the arrow in place and still have scaling background


chore: update readme

update readme

:tada: This PR is included in version 0.12.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket: