MultiMiner settings&issues !

Good afternoon,
I already follow the steps necessary for installation MultiMiner on Linux (Ubuntu 17.10) but without success.
When I try to launch MultiMiner I receive an error message in which it say that MultiMiner folder missing.
Beside of this I have some questions for which I didn't found yet any answer, but I hope that I will found some here.
So, my questions are:

What is the latest version of Ubuntu (64bit) for which is optimized MultiMiner ?
once all GPU's are mounted on the rig, and Ubuntu installed (recommended version, for latest MultiMiner) it is imposed to be made changes in BIOS ? (except case in which not all GPU's are recognized, and is imposed changes in BIOS);
It is imposed that based on GPU's use to be installed properly the correct drivers manually ? (my first rig will have 8 GPU's: AMD and NVidia)
MultiMiner detect automatic the GPU's type and model ?
It is imposed that GPU's to be under-clocked manually for best performance ?  or MultiMiner can do this based on currency choice for mining?
Each rig (for more rigs) must have installed MultiMiner ? or can be installed on one PC (as server) and from there to be controlled all rigs (slaves) using MultiMiner ? in this case is important that only the operating system to be installed on all rigs ?

I waiting with higher interest your feedback, to can start to use it.
Any recommendation or advice + links is welcome and appreciate (also I am sure that more users will appreciate advice posted).
Thanks in advice to all members of community for support.
Kind regards.
Johnny

Please post the exact command you are running and the exact output using copy & paste rather than paraphrasing.

Closing due to no response. If this problem persists, please reopen the issue.


Fix Ethereum integration test

Anchor Ethereum client docker image version
Fix geth CLI flags according to the set release

Signed-off-by: Attila Klenik<EMAIL_ADDRESS>

addresses #1158


⚠ Bofrost.at has degraded performance

In 699309f, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1997 ms

Resolved: Bofrost.at performance has improved in 952d391 after 10 minutes.


VSCode .env parser does not handle environment variables with = properly

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: 1.87.0 , 019f4d1419fbc8219a181fab7892ebccf7ee29a2, x64
OS Version: Windows 10 Enterprise, 10.0.19045 Build 19045

Loading the workspace .env file loads an environment variable with a = in it. This means that it fails to parse things like Connection strings.
Temporary workaround is to disable the environment loading feature (for my case, using python environments, by applying the   "python.terminal.activateEnvironment": false setting)
Steps to Reproduce:

create workspace
create .env file
write the line connectionstring=Endpoint=some.endpoint;etc=etc; in said .env file. Use a valid connection string to e.g. an Azure Eventhub, or a local database, or w/e to verify.
Running your code snippets no longer works in the integrated terminal as the VSCode .env parser seems to not read the env file correctly. It works fine in OS native terminals (cmd, PS etc) for Python and TypeScript code, so this is probably an issue with the VSCode env file parser

This is actually an issue on VS Code. Closing as duplicate of https://github.com/microsoft/vscode/issues/197603, please like/comment that to raise priority.


Error when performing az webapp deploy

This is autogenerated. Please review and update as needed.
Describe the bug
Command Name
az webapp deploy
Errors:
The command failed with an unexpected error. Here is the traceback:
The operation 'azure.cli.command_modules.appservice.custom#perform_onedeploy' is invalid.
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
    handler = import_module(mod_to_import)
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/usr/local/lib/python3.10/site-packages/azure/cli/command_modules/appservice/custom.py", line 24, in <module>
    import OpenSSL.crypto
  File "/usr/local/lib/python3.10/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/local/lib/python3.10/site-packages/OpenSSL/crypto.py", line 1553, in <module>
    class X509StoreFlags(object):
  File "/usr/local/lib/python3.10/site-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags
    CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/knack/cli.py", line 231, in invoke
    cmd_result = self.invocation.execute(args)
  File "/usr/local/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 556, in execute
    self.commands_loader.load_arguments(command)
  File "/usr/local/lib/python3.10/site-packages/azure/cli/core/__init__.py", line 515, in load_arguments
    self.command_table[command].load_arguments()  # this loads the arguments via reflection
  File "/usr/local/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 313, in load_arguments
    super(AzCliCommand, self).load_arguments()
  File "/usr/local/lib/python3.10/site-packages/knack/commands.py", line 104, in load_arguments
    cmd_args = self.arguments_loader()
  File "/usr/local/lib/python3.10/site-packages/azure/cli/core/commands/command_operation.py", line 125, in arguments_loader
    op = self.get_op_handler(self.op_path)
  File "/usr/local/lib/python3.10/site-packages/azure/cli/core/commands/command_operation.py", line 66, in get_op_handler
    raise ValueError("The operation '{}' is invalid.".format(op_path))
ValueError: The operation 'azure.cli.command_modules.appservice.custom#perform_onedeploy' is invalid.

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az webapp deploy --name {} --resource-group {} --src-path {}

Expected Behavior
Environment Summary
Linux-5.15.49-linuxkit-x86_64-with, Alpine Linux v3.15
Python 3.10.4
Installer: DOCKER

azure-cli 2.36.0

Additional Context

Thank you for opening this issue, we will look into it.

Hi @mosesantony,
2.36.0 is not the latest Azure CLI(2.48.1).
Please upgrade to the latest Azure CLI version by following https://learn.microsoft.com/en-us/cli/azure/update-azure-cli.

Latest CLI doesn't support python deployment. So i am forced to do it via this specific cli version. I got the reference from https://petri.com/install-azure-cli/ to use this version.

@mosesantony can you provide some more details about this issue? I am unable to reproduce this on my end.

Unfortunately, i am not into that environment. It is difficult to reproduce and i am not using this any more. Closing this one as of now.


Update model_zoo.py

As suggested in MODEL_ZOO.md, I tried running
from fsdet import model_zoo
model = model_zoo.get(
   "COCO-detection/faster_rcnn_R_101_FPN_ft_all_1shot.yaml", trained=True)

However, that resulted in this error:
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/src/few-shot-object-detection/fsdet/model_zoo/model_zoo.py", line 176, in get
    cfg.merge_from_file(cfg_file)
  File "/venv/lib/python3.7/site-packages/detectron2/config/config.py", line 54, in merge_from_file
    self.merge_from_other_cfg(loaded_cfg)
  File "/venv/lib/python3.7/site-packages/fvcore/common/config.py", line 123, in merge_from_other_cfg
    return super().merge_from_other_cfg(cfg_other)
  File "/venv/lib/python3.7/site-packages/yacs/config.py", line 217, in merge_from_other_cfg
    _merge_a_into_b(cfg_other, self, self, [])
  File "/venv/lib/python3.7/site-packages/yacs/config.py", line 478, in _merge_a_into_b
    _merge_a_into_b(v, b[k], root, key_list + [k])
  File "/venv/lib/python3.7/site-packages/yacs/config.py", line 478, in _merge_a_into_b
    _merge_a_into_b(v, b[k], root, key_list + [k])
  File "/venv/lib/python3.7/site-packages/yacs/config.py", line 491, in _merge_a_into_b
    raise KeyError("Non-existent config key: {}".format(full_key))
KeyError: 'Non-existent config key: MODEL.BACKBONE.FREEZE'

In 884c17f ("remove detectron2 dependencies") fsdet/config/config.py was removed and this was changed from fsdet.config to detectron2.config. However, fsdet/config/config.py was then added back in 3cab324 ("more updates") and this file was never updated to match. fsdet/config/config.py imports fsdet/config/default.py, which defines MODEL.BACKBONE.FREEZE, which resolves this problem.

It turns out, I also had to change the path computed by model_zoo/model_zoo.py:get_config_file before I could get the model to download. Even then, I still cannot run the demo using an fsdet:// path.

However, if I switch to the model_zoo branch and apply these changes then I can get the model and run the demo.

The path change in model_zoo/model_zoo.py:get_config_file is necessary because model_zoo.py is based on the same file in detectron2; however, detectron2 copies the detectron2/configs into the detectron2/model_zoo directory on install, so the path is correct in that case.
https://github.com/facebookresearch/detectron2/blob/v0.3/setup.py#L141-L142

Just to close the loop, it appears that in v0.1, there was a setup.py file (like detectron2) that copied the configs directory into the model_zoo.

By using an older version of fvcore, I am now able to run the demo on the master branch, and run training.
detectron2 v0.2.1 depends on fvcore>=0.1.1. However, fsdet expects fvcore:fvcore/common/checkpoint.py to import PathManager from fvcore.common.file_io, not iopath.common.file_io (this changed in 813a225) because fsdet registers a path handler (in fsdet/checkpoint/catalog.py:PathManager.register_handler) on fvcore.common.file_io.PathManager (as does the detectron2 package). As such, we must use a release prior to 813a225 (there are no releases on github, but pypi has a ton)


Update json4s to 3.5.0

Hi,
I am using json4s in my project along with jwt-scala. It worked ok with version 3.4.2 but today I updated to 3.5.0 and got this exeption:
java.lang.NoSuchMethodError: org.json4s.native.JsonMethods$.render(Lorg/json4s/JsonAST$JValue;Lorg/json4s/Formats;)Lscala/text/Document;
I reverted to 3.4.2 and have no rush to update to 3.5.0, but it would be nice to have the latest version. Specially since the current one referenced in jwt-scala is 3.3.0.

If you could provide a PR, that would be super great. Otherwise, I will do it asap but I don't have much time to dive back into Scala at the moment.

I'm on it

#34 Done. Ran tests and it seems to be working OK.

Fixed in 0.9.1

Nice. Thank you!


Create ub.txt

Kind request to add University of Botswana

@Daniel-Dube Pull request merged. Thank you!


Document .Names format placeholder in man page for docker ps

As of v1.10.1, the man page for docker ps does not mention the .Names placeholder for the --format option.
It IS mentioned in the website documentation, in file docker/docs/reference/commandline/ps.md.
I'll file a pull request soon.

If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
For more information about reporting issues, see CONTRIBUTING.md.
You don't have to include this information if this is a feature request
(This is an automated, informational response)

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO


Fix Pending Status persists for all successful transactions

This PR fixes the pending status that persists after all successful transactions.
Fixes #965 and  #961🦕

A little explanation for future persons :-)
When your app components create different instances of a Dao, the instances are not synchronized. Hence you might find that one instance of your Dao is busy updating the database whereas another is busy reading the database. So the one reading the database might in most cases get stale data.
One solution could be providing a singleton instance of your Dao and injecting the instance to all your components. Since you only have one single instance, from how room is designed, it will be up-to-date with the current data in the table.
Another solution could be forcing room to invalidate table instances and subsequently invalidate your Dao instances upon an update so that any component using your Dao will get an updated instance of it. Behind the scenes what room does is it uses a service that tracks the database changes and updates the instances of your Dao's. So anytime your data changes, the instances are updated and the Dao's are always synchronized.
I have gone with the second solution since it is the easier one.

A little explanation for future persons :-)
When your app components create different instances of a Dao, the instances are not synchronized. Hence you might find that one instance of your Dao is busy updating the database whereas another is busy reading the database. So the one reading the database might in most cases get stale data.
One solution could be providing a singleton instance of your Dao and injecting the instance to all your components. Since you only have one single instance, from how room is designed, it will be up-to-date with the current data in the table.
Another solution could be forcing room to invalidate table instances and subsequently invalidate your Dao instances upon an update so that any component using your Dao will get an updated instance of it. Behind the scenes what room does is it uses a service that tracks the database changes and updates the instances of your Dao's. So anytime your data changes, the instances are updated and the Dao's are always synchronized.
I have gone with the second solution since it is the easier one.

Thanks for this 👏🏽

Hello guys,
was this fix merged with master branch or tested and working fine with you ?
As still I am facing this challenge of pending status on successfull transactions


Add minimum limit to batch_size and changed not to allow null

Current batch_size field is not validated appropriately.
I added @Min(1) annotation as same as GzipFileEncoderPlugin and used int instead of Integer to reject null.

Thanks!


Adding '.' to env:PATH adds/remembers the directory where the command was issued, does not denote the ambient current directory later on

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest released version
[X] Search the existing issues.
[X] Refer to the FAQ.
[X] Refer to Differences between Windows PowerShell 5.1 and PowerShell.

Steps to reproduce
When adding '.' to $env:PATH inside PowerShell (like suggested in #14106), the '.' seems to refer to the directory where the $env:PATH = $env:PATH + ';.' was issued, but does not denote the actual "current directory", when you change the current directory (using Set-Location).
(PS> $env:PATH="")
PS> mkdir $env:TEMP\a
PS> mkdir $env:TEMP\b
PS> echo "@echo from a" > $env:TEMP\a\t.cmd
PS> echo "@echo from b" > $env:TEMP\b\t.cmd
PS> cd $env:TEMP\a
PS> $env:PATH=$env:PATH + ';.'
PS> t.cmd
from a
PS> cd $env:TEMP\b
PS> t.cmd
from a

That last line should output from b (also see "Expected haviour" below). Note that clearing env:PATH before all this is "optional" - the behavior is the same.
Interestingly, if you repeat $env:PATH=$env:PATH + ';.' in another directory (like above in $env:TEMP\b), then this new directory will be considered for the '.' (that is above invoking t.cmd would output from b, regardless of where  the actual Get-Location is at).
Example:
PS> cd $env:TEMP\a
PS> $env:PATH=$env:PATH + ';.'
PS> t.cmd
from a
PS> cd $env:TEMP\b
PS> $env:PATH=$env:PATH + ';.'
PS> t.cmd
from b
PS> cd $env:TEMP\a
PS> t.cmd
from b

Tests have been done with 7.1.3, but same behavior can be observed with 7.2.0-preview7.
Expected behavior
PS> cd $env:TEMP\a
PS> $env:PATH=$env:PATH + ';.'
PS> t.cmd
from a
PS> cd $env:TEMP\a
PS> t.cmd
from b

Actual behavior
PS> cd $env:TEMP\a
PS> $env:PATH=$env:PATH + ';.'
PS> t.cmd
from a
PS> cd $env:TEMP\a
PS> t.cmd
from a

Error details
No response
Environment data
Name                           Value
----                           -----
PSVersion                      7.1.3
PSEdition                      Core
GitCommitId                    7.1.3
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Visuals
No response

Hi, any news or opinions on this?

I vote to get this triaged also.
Adding '.' to the PATH list should always resolve to the current path when you change directories!

It looks to me PowerShell command discovery somehow cached the t.cmd it found from the first time. From your example repro above, continue to run the following:
> cd c:\   # move to a completely unrelated location, which doesn't contain a 't.cmd' file
> t.cmd
from a

@daxian-dbw, it looks like it isn't the specific command whose location is cached, it is the entire $env:PATH value, with . getting resolved to the current directory at the time of caching.
Given PowerShell's - sensible - requirement to use .\ or ./ to invoke executables located in the current directory, I think it would make more sense to simply ignore attempts to  add . to $env:PATH.
Arguably, even the current - obscure and probably accidental - behavior introduces a security vulnerability from that perspective.

@mklement0  I agree with your general sentiment about security.
However, that should be the user's choice! Not the default forced upon by the shell.
(One could image a variable, say, $CurrentDirectoryWarningBehavior with a value of Enabled, that prints a warning every time PS uses the . to resolve a command from the path. - if that is possible at all, I don't know)
Because this issue is a regression to existing behavior and "prior work", confusing and annoying to users coming from or being experienced with:

PowerShell (for Windows)
a diversity of UNIX shells
CMD.exe

@cklutz, you're right, I didn't realize it was a regression (I mistakenly thought it was broken in Windows PowerShell too).
By the way, on macOS a . entry is seemingly ignored altogether, whereas WSL with Ubuntu 20.04 seems to exhibit the same behavior as on Windows.
We're clearly dealing with a bug that needs to be resolved one way or the other.
I see your point about not forcing a choice upon the user, and personally I have no strong feelings about how this should be resolved.
To mention another possibility: emit an unconditional warning if . is found in $env:PATH on startup or whenever $env:PATH is modified in session with a value that has a . entry.

P.S., @cklutz
As a workaround or possibly even something you may adopt as an alternative to putting . in $env:PATH you can rely on tab-completion to avoid having to type .\ or ./ every time.
This works as intended by default on Windows, but requires some tweaking on Unix-like platforms for a smooth experience (see this SO answer).

I gotta agree with timkgithub.  Let it do the obvious thing that everyone would expect.

This is still very much a problem. A resolution would still be rather welcome. 🌴

Please don't close issues that are real and affecting many.

The @WG group discussed this and agree that it's a bug. While there is a security aspect about this, it's still an explicit action that the user has taken. However, the real issue is that if you add "." to your path, the wrong location has been added to you path, once you change your location the previous location is remembered.
and $env:PATH may not represent the actual path (since . has been changed to /tmp but is not reflected.

This needs to stay open a bit longer; presumably until @JamesWTruher comes back to us with another update on this bug 🐞


Make "Must first load config" into exception class

Is your feature request related to a problem? Please describe.
This:
parsl/dataflow/dflow.py:            raise RuntimeError('Must first load config')

should be its own exception class so that code trying to detect uninitialized parsl can detect it based on class, rather than on matching strings.
tagging @yadudoc who had some interest in error structuring.
Additional context
https://github.com/cytomining/CytoTable/pull/93

Thank you for the changes related to addressing this issue! The newly added ConfigurationError for cases where Parsl configuration has not yet been loaded provides greater specificity but requires parsing the Exception message in order to make use of it (using either str(ConfigurationException) or ConfigurationException.args[0] to filter the specific message). I'd like to suggest an additional Parsl-specific Exception (perhaps NoConfigurationError, with a parent Exception of ConfigurationException) to help further differentiate specific cases where Parsl configuration has not yet been loaded. See this PR for an example Parsl implementation of where this could make a difference.

@d33bs have a look at https://github.com/Parsl/parsl/pull/2890

Thank you @benclifford , I took a look and thought that looked great for this!

PRs #2878 and #2890 resolve this


chore(main): release 1.22.0

:robot: I have created a release beep boop
1.22.0 (2024-12-14)
Features

InterfaceManager: Update window management and mouse move logic for better performance (5404750)
Tools: update .editorconfig to use more strict code analysis rules (2622cb0)

Bug Fixes

.editorconfig: remove unnecessary suppressions for CA1016 and S3904 (2622cb0)
AssemblyInfo.cs: Update assembly version from 1.21.0 to 1.21.241214.1151 (5404750)
PointerChainFollower.cs: ensure the pointer dereference and address following methods use correct processoryClient references (2622cb0)
Row.cs: add a missing closing curly brace (2622cb0)
WindowManager, MonitorInfo: Correct monitor information types to match C# conventions (5404750)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/myinusa/Processory/releases/tag/v1.22.0 :sunflower:


docs: merge projects from bubble tea repo's in the wild section

docs(featured): update in the wild with projects from Bubble Tea README
docs: update name to charm and friends in footer

Preview: https://github.com/charm-and-friends/charm-in-the-wild/blob/bubbletea-in-the-wild/README.md


Reminder - #5831 - Codeunit 950 "Time Sheet Management" - OnBeforeCopyTimeSheet

Regarding #5831 from January 2020, there is nothing to see in Insider Build 17.0.14751.0-W1.
Status since 07. Feb is "ships-in-future-update".
Will you still integrate it?

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


install glib failed

[✔] gettext have been installed successfully.
=============== Installing glib ===============
=>> STEP 1 : load formula
=>> STEP 2 : handle required commands
Found 1 package manager : apt
🔥  meson command is required, but it is not found, I will install it via apt
==> apt -y install meson
---- meson is installed already
install.log.txt
meson-log.txt
==> install -d /tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a
==> cd /tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a
==> /usr/bin/meson setup --prefix=/root/.ndk-pkg/install.d/glib/armeabi-v7a --buildtype=release --backend=ninja --pkg-config-path=/root/.ndk-pkg/install.d/zlib/armeabi-v7a/lib/pkgconfig:/root/.ndk-pkg/install.d/bzip2/armeabi-v7a/lib/pkgconfig:/root/.ndk-pkg/install.d/pcre/armeabi-v7a/lib/pkgconfig:/root/.ndk-pkg/install.d/libffi/armeabi-v7a/lib/pkgconfig:/root/.ndk-pkg/install.d/libiconv/armeabi-v7a/lib/pkgconfig:/root/.ndk-pkg/install.d/ncurses/armeabi-v7a/lib/pkgconfig:/root/.ndk-pkg/install.d/gettext/armeabi-v7a/lib/pkgconfig --build.pkg-config-path= --cross-file=/tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a/cross-file -Dnls=disabled -Dman=false -Dgtk_doc=false -Diconv=external -Ddtrace=false -Dinternal_pcre=false -Dinstalled_tests=false -Dbsymbolic_functions=false /tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a /tmp/tmp.yXR5km2Bwm
The Meson build system
Version: 0.53.2
Source dir: /tmp/tmp.yXR5km2Bwm
Build dir: /tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a
Build type: cross build
Project name: glib
Project version: 2.66.0
Appending CFLAGS from environment: '--sysroot /home/liuhao/Desktop/tools/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot -Qunused-arguments -Os -fpic'
Appending LDFLAGS from environment: ['-L/root/.ndk-pkg/install.d/gettext/armeabi-v7a/lib', '-L/root/.ndk-pkg/install.d/ncurses/armeabi-v7a/lib', '-L/root/.ndk-pkg/install.d/libiconv/armeabi-v7a/lib', '-L/root/.ndk-pkg/install.d/libffi/armeabi-v7a/lib', '-L/root/.ndk-pkg/install.d/pcre/armeabi-v7a/lib', '-L/root/.ndk-pkg/install.d/bzip2/armeabi-v7a/lib', '-L/root/.ndk-pkg/install.d/zlib/armeabi-v7a/lib', '--sysroot', '/home/liuhao/Desktop/tools/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot', '-L/home/liuhao/Desktop/tools/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/27', '-lpcre', '-liconv', '-lm', '-lz']
Appending CPPFLAGS from environment: '-I/root/.ndk-pkg/install.d/gettext/armeabi-v7a/include -I/root/.ndk-pkg/install.d/ncurses/armeabi-v7a/include -I/root/.ndk-pkg/install.d/libiconv/armeabi-v7a/include -I/root/.ndk-pkg/install.d/libffi/armeabi-v7a/include -I/root/.ndk-pkg/install.d/pcre/armeabi-v7a/include -I/root/.ndk-pkg/install.d/bzip2/armeabi-v7a/include -I/root/.ndk-pkg/install.d/zlib/armeabi-v7a/include --sysroot /home/liuhao/Desktop/tools/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot -Qunused-arguments -I/home/liuhao/Desktop/tools/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/arm-linux-androideabi -include /root/.ndk-pkg/include.h'
meson.build:1:0: ERROR: Could not invoke sanity test executable: [Errno 8] Exec format error: '/tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a/meson-private/sanitycheckc.exe'.
A full log can be found at /tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a/meson-logs/meson-log.txt
[✘] install glib/armeabi-v7a failed! you can go to /tmp/tmp.yXR5km2Bwm to see see.

/tmp/tmp.yXR5km2Bwm/1633338570/armeabi-v7a/meson-private/sanitycheckc.exe

It seems that it's a bug of meson. I recommend you to install Homebrew on your Ubuntu build machine, and remove the meson package installed by apt. because the packages in apt repo's is usually too old. if HomeBrew is installed, ndk-pkg will install software from Homebrew. softwares in HomeBrew all are the latest version.
HomeBrew homepage

install HomeBrew failed because Ubuntu in VirtualBox can not access v2ray in PC.
But I install glib successfully after update meson through " pip3 install meson ".
thank you very much!!!


This function types

Implements the proposal at #6018 and finishes the work described at #3694. See the bottom of this description for a tutorial and usage recommendations for this new feature.
This change adds checking for this types in functions. With this-function types, you can prevent the use of methods as free functions. And this types allow you to make constructor functions that return a real type rather than any. A number of other common javascript patterns can be given types or even inferred with --strictThis turned on.
Correctly prevent references to this when assigning callbacks
interface Callbacks {
  property: number;
  onClick(this: void, e: Event): void;
}
function handleClick(this:void, e: Event) {
  console.log(this.property); // error, 'void' has no member 'property'
}
class C {
  property: string
  tryHandleClick(this: this, e: Event): void {
    console.log(this.property); // OK, 'C' has member 'property'
  }
  actuallyHandleClick(this: void, e: Event): void {
    console.log(this.property); // error, 'void' has no member 'property'
  }
}
let c: C;
let callbacks: Callbacks;
callbacks.onClick = handleClick; // OK, this: void for both
callbacks.onClick = c.tryHandleClick; // Error, 'C' is not assignable to 'void'
callbacks.onClick = c.actuallyHandleClick; // OK, this: void for both

Note that callback functions are prevented from referring to members of this because they declare that this: void in order to be assignable to onClick.
Also note that the less common case of callback methods still allows functions to be assigned to these properties:
class Callbacks {
  m: number;
  callback: (this: this, n: number) => number;
}
function f(this: void, n: number) {
  return n;
}
let c: Callbacks;
c.callback = f; // OK, because f does not refer to any properties of `this`.

You can even require a different this for methods that will be used as a callback:
interface Callbacks {
  property: number;
  onClick(this: Callbacks, e: Event): void;
}
class C {
  property: string
  tryHandleClick(this: Callbacks, e: Event): void {
    console.log(this.property); // OK, 'C' has member 'property'
  }
}
let c: C;
let callbacks: Callbacks;
callbacks.onClick = c.tryHandleClick;

Contextual typing of methods and functions in object literals
Now when an object literal declares that it is of some type, this is also contextually typed inside the object literal.
interface I {
  n: number;
  method(m: number): number;
  callback: (m: number) => number;
}
let o: I = {
  n: 12,
  method(m) {
    return this.n + m; // OK, `this: I` from context
  },
  callback = m => m + 1, // OK, `this: void` from context
}

Build object literals from existing functions
You can also define functions alone and then later build an object literal from them. If the functions specify the this type, then the compiler will check references to this in the function's body. And it will also check that the function's this is assignable to the this of the object literal's type.
interface I {
  n: number;
  method: (m: number) => number;
}
function futureMethod(this: I, m: number) {
  return this.n + m;
}
let o: I = { n: 12, method: futureMethod };

Defining a function this way also requires that it cannot be called free:
futureMethod(12); // error, 'void' is not assignable to 'I'
o.futureMethod(12); // ok, 'o' is of type 'I'

The type of functions when used as constructors is now known.
When you use new with a function, you can now declare the type of the object that will be constructed with this. Previously, the type was always any. The compiler will also check that your assignments to this are correct in the body of the function.
function Symbol(this: Symbol, flags: SymbolFlags, name: string) {
  this.flags = flags;
  this.name = name;
  this.declarations = undefined;
}
let s = new Symbol(flags, "core"); // s: Symbol

strictThisChecks flag default types
UPDATE: --strictThisChecks removed
Because of performance concerns and lack of information on how people will use this types, we decided to remove --strictThisChecks for this release. I left the original explanation below.
--noImplicitThis
--noImplicitThis makes it an error to use this that is implicitly any inside of a function:
function F(x: number, y: number) {
    this.x = x; // this: any, so anything is legal
    this.z = y; // missed horrible typo
}
let f = new F(); // also, f: any  <-- that's sad :(

Add an annotation to fix this:
interface F {
    x: number;
    y: number
}
function F(this: F, x: number, y: number) {
    this.x = x;
    this.y = y;
}
let f = new F(12, 13); // f: F <-- hooray! :)

Previous explanation of strictThisChecks
For backward compatibility, this types default to any if not specified. However, if --strictThis is specified, then functions will default this: void and methods will default this: this. This removes the need for most of the annotations in the previous examples. For example, an interface can declare a function with this: void by using function syntax and a method with this: this by using method syntax:
interface I {
  f: (n: number) => number; // this: void
  m(n: number): number; // this: this
}
function g(n: number) { // this: void
  return n;
}
class C {
  private special: number = 12;
  m(n: number): number { return n + this.special; }
}

let i: I;
let c: C;
i.f = g; // ok, this: void
i.f = c.m; // error, 'void' is not assignable to 'C' (missing member 'm')
i.m = c.m; // error, 'I' is not assignable to 'C' (missing member 'special')

This breaks a lot of existing code, but is easy to write for future code.
How to upgrade code to --strictThis
When you switch on --strictThis you'll see a lot of errors with calling a method as if it were a function:
interface Object {
  method(n: number): void;
}
const f = object.method;
f(12); // ERROR, this should be 'Object' not 'void'

You can fix the usage or the interface definition:
// Fix usage:
const fix1 = n => object.method(n);
correct(12); // OK, lambda captures the object and doesn't require 'this'
f.call(object, 12); // alternate fix: use Function.call

/// OR ///
// Fix definition:
interface Object {
  method(this: void, n: number): void;
}
// alternate fix: use function syntax to implicitly set this: void
interface Object {
  method: (n: number) => void;
}
const f = object.method;
f(12); // OK, this is void

Designing new, strict-this code
To be able to switch --strictThis on, the style that you write interfaces needs to change. You need to consider how people will use your interfaces. If they will treat your interface's functions as methods on an object, you should use the normal method declaration syntax. If they will treat them as a callback or some other kind of free function, you should declare them using the function property syntax. For example:
interface Extractor {
  extract(input: string): Row[]; // method style
}

interface Callbacks {
  callback: (e: Event) => void; // function property style
}

A safe default is to use the method declaration syntax. I discuss the tradeoffs below.
OO programming style
If you are writing pure OO Typescript/ES6, then you don't need to change much to work with  --strictThis.

OO interfaces should have this: this
The only exception should be callbacks, which should have this: void.

Fortunately, these are the default types for the method and function syntax, respectively, so you don't have to write anything much different:
interface Extractor {
    extract(input: string): Row[];
    // the default (this: this) makes this the same as writing:
    // extract(this: this, input: string): Item[];

}
class XmlExtractor implements Extractor {
    extract(input: string): Row[] {
        // read from Xml into your Row objects
        // you can call private methods, etc, like before.
    }
    private helperMethod(sub: string): Row {
        // ...
    }
}

Now you can't assign extract to a function by mistake:
const xml = new XmlExtractor();
otherObject.onCall = xml.extract; // error: types of this are not compatible
let ex = xml.extract; // ok ...
ex('<row>...</row>'); // error, this: void is not compatible with this: XmlExtractor
otherObject.onExtract = ex; // error this: void is not compatible with this: XmlExtractor

And if you implement an interface, your methods get the right this-type regardless of what syntax you use:
interface Callbacks {
  callback: (e: Event) => void;
}
class XmlExtractor implements Extractor, Callbacks {
  extract(input: string): Row[] {
    // here, this: XmlExtractor
  }
  callback(e: Event) {
    // here, this: void
    this.extract(e.data); // error! 'this: void' has no method 'extract'
  }
}
otherObject.onExtract = xml.extract // error
otherObject.onExtract = xml.callback // ok!

How can I use a method as a callback?
You may have noticed that XmlExtractor.callback isn't that useful as a method since you can't actually refer to any other methods. The solution is the same as you use today: wrap the method call inside a lambda:
class XmlExtractor implements Extractors, Callbacks {
  extract(input: string): Row[] { ... }
  callback = e => this.extract(e.data); // ok, => doesn't capture 'this'
}

This formulation is OK because lambda (=>) doesn't bind this, so this comes from the class instead of from the implementing function.
Functional style
If you are writing your code in functional style, you probably use interfaces to describe records of functions. You can still declare the functions using the method style and build instances of the interface using an object literal of your functions:
interface Compiler {
  parse(program: string): Node;
  bind(tree: Node): Map<Symbol>;
  check(tree: Node): Diagnostic[];
}
function parse(program: string) {
  // code inside does not refer to this
}
// etc ...
let compiler: Compiler = { parse, bind, check }

But this prevents users from pulling these functions off of compiler and using them individually:
let tree = compiler.parse("console.log('hello')");
let parse = compiler.parse;
parse("console.log('goodbye')"); // error, this is 'void' which is not assignable to 'Compiler'

This is safe because of course they are free functions that do not require access to this. If you want enable this usage, you need to use the function property declaration syntax for the interface:
interface Compiler {
  parse: (program: string) => Node;
  bind: (tree: Node) => Map<Symbol>;
  check: (tree: Node) => Diagnostic[];
}
function parse(program: string) {
  // code inside doesn't refer to this
}
let compiler: Compiler = { parse, bind, check }
let parse = compiler.parse;
parse("console.log('goodbye')");

How can I implement an OO-style interface with nothing but functions?
If you want to implement an OO-style interface using only functions, you'll need to declare the this type in order to have access to that interface's members inside the function body.
function extract(this: Extractor, input: string): Row[] {
  // code here can refer to members of Extractor
}

Then you can create an object literal that contains that function:
let extractor: Extractor = {
  extract
}

This is essentially the code you would write today, but now usages of this are checked. For even more convenience you can use the contextual typing that comes from writing a function inside an object literal:
let extract: Extractor = {
  function extract(input: string): Row[] {
    // code here can refer to members of Extractor
  }
}

But at this point you might as well write a new class that implements Extractor.
Interfacing with JavaScript
The problem with interfacing to JavaScript is that it may use any or all of the above styles. A good default for writing types for Javascript code is the method declaration style. This makes implementing the interface easier. On the other hand, it prevents users of the interface from pulling functions off of the interface in order to save them as variables or to use them as callbacks.
This is the main reason that DefinitelyTyped definitions can't automatically compiled with --strictThis: it's impossible to predict which style of usage is the desired one for a currently-unmarked interface:
interface WholeClass {
  method(): void; // probably a method?
}
interface Record {
  func(x: string): number; // probably a function?
}

@ahejlsberg and @DanielRosenwasser, I believe you were both interested in this.

Trying to compile Angular 2 exposes bug #7097. Until that bug is fixed, --strictThis will cause high memory usage or out-of-memory crashes in projects with classes that have a lot of static, generic functions (Angular 2's ListWrapper class has 25 static functions in it).
Otherwise I've addressed all the comments so far. @ahejlsberg @DanielRosenwasser any other comments?

#7138 fixes #7097, which fixes the high memory/out-of-memory bug for classes with lots of static, generic functions when running --strictThis.

I updated the PR with two new features:

this expressions inside object literal methods now have the type of the containing object literal instead of any.
When unioning two call signatures, the this-type of the signature is now unioned if there is an otherwise-common call signature. This resolves the tricky error resulting from unioned call signatures having the wrong this-type. This applies to types with multiple call signatures, too.

can we add a fourslash test for parameter help.

:+1:

It looks like the only test where you have a this parameter with no type annotation is on an arrow function. Can you write

A test with a contextually typed explicit this parameter.
A test with an implicit any on an explicit this parameter.

(2) is on the last line of thisTypeInFunctions.ts
I'll add (1).

Not that #7097 is fixed, can strictThisChecks be readded?

@Gaelan I believe we concluded at our design meeting that we were going to hold off on --strictThis, partially for perf reasons, partially because alongside readonly and non-nullable types, this was going to cause a lot of issues for the community in updating .d.ts files in a compatible manner.

@DanielRosenwasser Ah.

@DanielRosenwasser I added a contextual typing test as in (2) with an implicit any on a this parameter. Note that the types are not quite right — the this parameter is never contextually typed, just this expressions in the function body. This is because getSignatureFromDeclaration stores thisType eagerly -- not thisSymbol like the rest of the compiler. I discussed this with @ahejlsberg and we decided it was OK for now since it simplifies the code a lot. I might change it later.
The effect is that this:
o.someMethod = function(this, m) { return this.n + m };

has these types:
o.someMethod: (this: O, m: number) => number // source of context
function(this: any, m: number) => number // this: any, but returns number
this: O // inside the body, this is contextually typed
this.n: number
m: number
return this.n +  m // correctly returns number

Note that the thisType: any is not contagious because it's not actually used -- for this.n, checkThisExpression uses the contextual type instead, which is this: O.

If I understand correctly, with this PR the following should work:
class Foo {
    private x: string;
}
class Bar {
    private foo: Foo;

    constructor(foo: Foo) {
        this.foo = foo;
    }

    actAsFoo(this: Foo): string {
        return this.x;
    }

    getFromFoo(): string {
        return this.actAsFoo.call(this.foo);
    }
}

butin actAsFoo I get `Error: Property 'x' is private and only accessible within class 'Foo'.

This feature is exactly what I'm after, I see it was merged but i can't find any docs regarding, and i saw here that it was not working well.
Is there any update? Can it be found in some newer version? Will it be added in the future?

https://www.typescriptlang.org/docs/handbook/functions.html has the documentation near the bottom of the page.


Add env variable which controls if auto launch is enabled or not

Keep old behaviour of allowing auto launch by default.
The user will land at the service launcher if the URL specifies autoLaunch=true when auto launch is disabled, as shown in this video:
https://github.com/InseeFrLab/onyxia-web/assets/10381866/37c642bf-11c3-4d8f-ab59-e01233732f5c
Discussion: Should the user get an alert or a notification that the service tried to auto launch but failed to due the configuration of onyxia-web? I vote no. One reason is there are no need for the user to have a concept of "autolaunch" and whenever or not the autoLaunch "fail".
Closes #548

Thx @johnksv
I am not sure how we should handle this forbid.
For example with this capture , I see that all the parameter will be kept from the query string..
The user will maybe just click to launch the service and it's still quite dangerous for him.
What do you think of this scenario ?

Hello again,
There is an important aspect that we need to address in this PR.
When a user initiates one of their saved configurations from the MyServices page, it effectively triggers an auto launch. We need to ensure that this feature remains functional even when auto-launching is restricted by the Onyxia administrator.
There are two strategies to achieve this:

Handle it at the UI (React) Level:
Before launching the service, we can check if the user is navigating from the MyServices page. If that is the case, we can enable auto-launch, overriding any explicit restrictions, since this is known to be an internal action.
To implement this, you would need to use a getPreviousRouteName() function, an example of which can be found here. This code is from a project with a similar architecture to Onyxia, so it can be copied directly into onyxia-web.

Handle it at the Core Level:
Add an isAutoLaunch parameter to the launch() function and allow the core to determine if the service should be launched. The core can determine whether we are launching a service with a configuration saved by the user, thereby bypassing the restriction.
The potential implementation could look like this:
src/core/usecases/launcher.ts
"launch":
    (params: { isAutoLaunch: boolean; }) =>
        async (...args) => {

            const { isAutoLaunch } = params;

            const [dispatch, getState, { createStoreParams: { isAutoLaunchAllowed } }] = args;

            prevent_auto_launch: {

                if (!isAutoLaunch) {
                    break prevent_auto_launch;
                }

                if (isAutoLaunchAllowed) {
                    break prevent_auto_launch;
                }

                const isAutoLaunchingSavedConfiguration =
                    dispatch(restorablePackageConfigs.thunks.getIsRestorablePackageConfigInStore({
                        "restorablePackageConfigs": getState().restorablePackageConfig.restorablePackageConfigs,
                        "restorablePackageConfig": (() => {

                            const restorablePackageConfig = selectors.restorablePackageConfig(getState());

                            assert(restorablePackageConfig !== undefined, "Launcher must be initialized before auto launching");

                            return restorablePackageConfig;

                        })()
                    }));

                if (isAutoLaunchingSavedConfiguration) {
                    break prevent_auto_launch;
                }

                // Actually preventing auto launch
                return;
            }

            dispatch(
                privateThunks.launchOrPreviewContract({
                    "isForContractPreview": false
                })
            );
        },

The createCore function would need to be updated to accept an additional parameter like isAutoLaunchAllowed.

Would you be willing to implement one of these solutions? If it seems too time-consuming, I would be more than happy to assist or take over the implementation.

For example, with this capture, I see that all the parameters will be retained from the query string. The user may simply click to launch the service, which can still be risky.

Regarding this, @fcomte and I discussed over the phone and agreed that with the x-security feature, we are providing a means to implement more stringent and fine-grained security measures. We should, therefore, concentrate on refining this feature and aim to keep the auto-launch prevention mechanism simple and straightforward.
Thank you for your time and contributions to this project.
Best,

Hi!
Thank you for your elaborate answer. The functionality of launching a saved configuration form the MyServices page is one that I was not aware of.
I have no strong opinion on which approach that would be best suited, so please feel free to recommend/go with the one you are most comfortable/think is best.
The effort I put into this will be on the side, and therefore limited.
If you would like to take over the implementation that is no problem for me (the end goal for me is to get this implemented in a good way, so who does it goes for the same 😅).

Hello @johnksv,
I apologize for not providing timely feedback on your Pull Request. Given that it's been inactive for two weeks, I'll take over from this point.
Moving forward, you can expect quicker responses from me on any future PRs, as I have now resumed full-time work on Onyxia.
Thank you for your understanding.
Best regards,


Add LICENSE.md, and a license header to each source file.

Addresses #243 and #246. These can both be closed when this merges.
@rs028 Let me know if this looks OK to you - I have added copyright for you just you and I to all of the testsuite stuff, as that is all brand new.

This is ready for merge if you are happy with it @rs028 . The only remaining step is to rename it to AtChem2 or similar, and release the version.

@spco, okay let's do the final merge! for the name I'd keep it simple. How about Atchem+?

My only issue with that is that GitHub doesn't allow + as a character in the repository name, so it would come out as Atchem-

AtChemX?

or back to the original idea of AtChem2?

Either of those sound good - your choice!

Okay, let's go with AtChem2. Not very imaginative, maybe, but easy and clear.

Ok, sounds good. I think the simplicity is the most important part. I will do that tomorrow. If we change the repo name to match that (probably best long-term) there may be a little work to tweak your local repo as well, but we can sort that out.

All right. I don't mind if I have to delete my repo and fork again. If it makes things simpler.


Finetune hyperparameters for Flan-series model

Hi, great benchmark!
I could not find the training config of the Flan model in your paper, (learning rate, and epoch for example).
Would it be possible to guide me through those hyperparameters?
Also, did you implement any regularizer while finetuning? Thanks!

The fine-tuning script has not yet been integrated into this FusionBench. A PyTorch lightning module for fine-tuning is as below:
class Seq2SeqLMModule(pl.LightningModule):
    def __init__(
        self,
        model: AutoModelForSeq2SeqLM | peft.PeftModel,
        tokenizer: AutoTokenizer,
        optim_cfg: DictConfig,
    ):
        super().__init__()
        self.model = model
        self.tokenizer = tokenizer
        self.optim_cfg = optim_cfg

    def forward(self, *args, **kwargs):
        return self.model(*args, **kwargs)

    def configure_optimizers(self):
        """
        Configure the optimizer and learning rate scheduler.

        Returns:
            Dict: Dictionary containing the optimizer and learning rate scheduler.
        """
        optim = {}
        if "optimizer" in self.optim_cfg:
            optim["optimizer"]: torch.optim.Optimizer = instantiate(
                self.optim_cfg["optimizer"],
                params=self.parameters(),
            )
        if "lr_scheduler" in self.optim_cfg:
            optim["lr_scheduler"]: torch.optim.lr_scheduler.LRScheduler = instantiate(
                self.optim_cfg["lr_scheduler"],
                optimizer=optim["optimizer"],
            )
        if self.trainer.is_global_zero:
            log.info(f"{'configure_optimizers':=^50}")
            log.info(optim)
        return optim

    def training_step(self, batch, batch_idx: int):
        outputs = self.forward(**batch)
        loss = outputs.loss
        self.log("train/loss", loss)
        return loss

    def save_trainable_parameters(self):
        if self.logger.log_dir is not None:
            # save trainable parameters
            ckpt_path = (
                Path(self.trainer.log_dir)
                / "checkpoints"
                / f"epoch={self.current_epoch}_step={self.global_step}.pth"
            )
            if not ckpt_path.parent.exists():
                Path.mkdir(ckpt_path.parent, exist_ok=True)
            state_dict = dict(
                (k, p) for k, p in self.model.named_parameters() if p.requires_grad
            )
            torch.save(state_dict, ckpt_path)

    def on_train_epoch_end(self) -> None:
        self.save_trainable_parameters()

We provide some fine-tuned Flan models on HuggingFace, which were fine-tuned using Adam optimizer, lr 1e-5, and weight decay set to 0, 2000 steps training for each model.

Thank you for your reply. How about the batch size?

the batch size was set to 16.


MWPW-140115 Release notes on slack channel when PR merged with Main branch

Integrated Slack Block Kit format
Added the @octokit/rest package for GitHub API.
Enhanced the parsing input text and convert it into Slack block format.

Resolves: MWPW-140115
Note: No impact on cc pages
Test URLs:

Before: https://main--cc--sivasadobe.hlx.live/creativecloud?martech=off
After: https://mwpw-140115--cc--sivasadobe.hlx.live/creativecloud?martech=off

No speicfic validations from QE needed.


can't see the examples notebooks in http://<IP_ADDRESS>:8000/

EDIT :  it is now working , i did a clean install with conda install instead of pip

Hi,
I downloaded the examples notebook, when going to the directory and launching mercury on terminal, i have this error, and i can't see the notebook in http://<IP_ADDRESS>:8000/
Your notebook kernel name is set to 'mex'. In this system available kernels are []. Sorry, cant automatically update the kernel name in the notebook. Successfully added a notebook (id:None)

Great, I've added Mercury to conda-forge yesterday. Will update docs.


color correction of placeholder

Test all number fields in expense/mileage/per-diem/advances before merging

yes done.

Test all number fields in expense/mileage/per-diem/advances before merging

Yes Done


Code/trigo calculator

Fixes Issue🛠

Closes #71
Description👨💻
When an angle is entered, it displays the trigo calculations.
When a real number is entered, it displays the inverse trigo calculations.

Type of change📄

[X] New feature (non-breaking change which adds functionality)

How this has been tested✅
Tested using various angles and real numbers.

Checklist✅

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[] I have commented my code, particularly in hard-to-understand areas
[] I have added demonstration in the form of GIF/video file
[X] I am an Open Source Contributor

Screenshots/GIF📷

Pls resolve the conflicts @kom-senapati

Merged!! 🎉 @kom-senapati


allow to specify VM ID

Hey there,
first of all, thanks for this great plugin.
I was wondering if there are any plans to add custom VM ID specification. From what I can tell from the source, it seems the provider just picks the next highest unused VIM ID: https://github.com/Telmate/terraform-provider-proxmox/blob/master/proxmox/provider.go#L99-L108
Not sure if this makes sense in the context of Terraform, but in my home setup I like to match VM IDs and IPs for easier management - e.g. the VM with ID 123 on node 1 will have the IP <IP_ADDRESS>, and so forth.
Is this sensible? I could give it a try at implementing it.

Sure, I think adding control over the VM ID is ok. Currently the name of the VM is used as the unique key, as long as that still works too, give it shot.

Why the VM id is needed?
because when you're trying to create VMs in parallel on the different nodes of the same cluster, you get error
* proxmox_vm_qemu.default.1: 500 close (rename) atomic file '/etc/pve/nodes/<node_name>/qemu-server/101.conf' failed: File exists
also you receive similar error when create few VMs on the same node at one time
500 can't lock file '/var/lock/qemu-server/lock-104.conf' failed: got timeout```

I think terraform trying to use same ID for different VMs

Best regard

For deployment of new VMs on different nodes, the VMID can act as an identifier for locating easily that specific vm on multiple clusters. It gets more friendly for statistics gathering. Based on experience, an ID ought to be unique but it is not always the case on multiple hosts (as terraform start with VMID 100 onwards)
We look forward to this implementation !
Good luck !


Updating case notification xsd with the new fields added.

Motivation and Context

What has changed

How to test?

Links

/deploy terryj

/deploy baileyw

/deploy manna

/deploy terryj


Box's stroke cap is ignored

Description
#let s = stroke(cap: "round")
#line(length: 5em, stroke: s)
#box(width: 5em, stroke: (bottom: s))
#block(width: 5em, stroke: (bottom: s))

Reproduction URL
No response
Operating system
Linux
Typst version

[X] I am using the latest version of Typst

what's your desired result? line cap only make sense at open ends of a path. both block and box are closed.

I want to make something like in note-me package, but have the line with rounded ends

I believe this is intended result. You may need actually draw a line rather than reuse the edge of a box/block. But it is indeed cumbersome to do that.

I tried something like
stack(dir: ltr, line(length: .., angle: 90deg), body)

but line doesn't accept 1fr or auto as length, and 100% length is relative to the page. Probably it will work with measure, but it sounds like overkill

I want to make something like in note-me package, but have the line with rounded ends

How does it look like with the radius option? Maybe it's good enough for your use case

radius looks bad if stroke is only on one side
Details

#box(stroke: (left: 1pt), radius: 1pt, inset: 5pt)[content]

Probably it could be applied to box's sides, when it's not joined with other sides? So to speak, to smooth out the edges

Yeah, okay, you're right.

This works with grid/table:
#let note(body) = {
  grid(
    stroke: (left: stroke(cap: "round", paint: blue)),
    inset: (left: 5pt),
    body,
  )
}
#note(lorem(20))

Details

So probably that's not very hard to implement


Framework not safe for use in app extensions

I'm looking at using AlamofireImage in an app that I'm building though when I link against it in an application extension I get the warning "Linking against dylib not safe for use in application extensions".
Is that something which has been done on purpose?
Happy to provide a pull request if required.
Thanks,
Matt.

It was definitely not done on purpose. A pull request would be great if you could put that together!

Thanks for your PR in #4 @mattdelves. I'm going to close this issue out.