Test CurveCryptoPool spot price

Description
Added a test asserting the lower bound of CurveCryptoPool.dydxfee relative to actual trade prices calculated by CurveCryptoPool.exchange. Also added timers to record speed of select functions in test.unit.test_tricrypto and the vyper_tricryptofixture in test.fixture.pool. Operations being timed include: boa.load, boa.load_partial, evaluating vyper statements through boa, and overriding CurveCryptoPool attributes.
Closes #197.
Hygiene checklist

[ ] Changelog entry
[x] Everything public has a Numpy-style docstring
(modules, public functions, classes, and public methods)
[x] Commit history is cleaned-up with minor changes squashed together
and descriptive commit messages following Tim Pope's style

Cute Animal Picture

Blocked by #241

Now unblocked (made some changes).

Best to merge #260 before this one

This pr has been isolated from #260


Promote incremental Java compilation

This pull request promotes Java incremental compilation as a first class citizen.

We should probably only merge this once we have fixed the remaining bugs.


feat: 添加编辑场景文档

👀 PR includes

✨ Feature

[] New feature

🎨 Enhance

[ ] Code style optimization
[ ] Refactoring
[ ] Change the UI
[ ] Improve the performance
[ ] Type optimization

🐛 Bugfix

[ ] Solve the issue and close #0

🔧 Chore

[ ] Test case
[x] Docs / demos update
[ ] CI / workflow
[ ] Release version
[ ] Other ()

📝 Description
添加编辑场景的demo
🖼 Screenshot

Before
After

❌
✅

🔗 Related issue link

🔍 Self-Check before the merge

[ ] Add or update relevant docs.
[ ] Add or update relevant demos.
[ ] Add or update test case.
[ ] Add or update relevant TypeScript definitions.

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


Uncomplete documentation

Link to article:
https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.routecollectionextensions.maproute?view=aspnet-mvc-5.2#System_Web_Mvc_RouteCollectionExtensions_MapRoute_System_Web_Routing_RouteCollection_System_String_System_String_System_Object_System_Object_
Problem:
Whether I am missing something or MSDN is not complete. Anyway, I am going to make an example of a situation I face almost every day.
If you follow the above link you will get to a method which deals with a routing in an ASP.NET application. As for description it takes five parameters. The last two of them are of our concern, namely: defaults and constraints. Both of them are an anonymous objects. They must have some specific values in order to have meaning, for example:

defaults parameter may have 'controller', 'action', 'id' values being set
constraints parameter may have 'isLocal' value being set

That is what I found in different books, courses, etc.
Even by means of google, I didn't manage to get a detailed overview of these parameters on official Microsoft resources though.
Any help will be appreciated!
Maksym

@mairaw @dend Can you take a look at this issue?

This is ASP.NET ref docs so I can't comment on this. Adding @Rick-Anderson and @scottaddie.

@Rick-Anderson Changed already.

Up!


Many to Many pivot table sort_order not updating

Description
I am trying to build a LMS with Modules and Topics and want to create a Many to Many relationship where a Modules can have many Topics and a Topic can be assigned to many Modules.
I have 3 tables:
modules
topics
module_topic
When I add the hasMany field type to the Modules table I am able to create and link topics and the module_topics table is updated correctly.
However the sort_order column is not updated.
I can update it in the DB manually and that will effect the order on the front end.
Steps to reproduce

Create 2 Models
Add hasMany field to both
create pivot table in DB
Add one model to another
sort_order not updating in DB

Environment
Environment
Application Name: Statamic
Laravel Version: 10.13.2
PHP Version: 8.2.4
Composer Version: 2.5.5
Environment: local
Debug Mode: ENABLED
URL: test.test
Maintenance Mode: OFF
Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: CACHED
Drivers
Broadcasting: log
Cache: statamic
Database: mysql
Logs: stack / single
Mail: smtp
Queue: sync
Session: file
Statamic
Addons: 2
Antlers: runtime
Stache Watcher: Enabled
Static Caching: Disabled
Version: 4.6.0 Solo
Statamic Addons
doublethreedigital/runway: 5.0.7
example/my-addon: dev-master

Can you provide the HasMany fields from your blueprints please?

Here is the link to the repo I am working on: https://github.com/tom-sk/laravel-lms
I was messing around trying to use order_column: module_topic.sort_order in the Modules blueprint
Modules blueprint:
tabs:
  main:
    display: Main
    sections:
      -
        fields:
          -
            handle: name
            field:
              type: text
              required: true
              validate:
                - required
          -
            handle: topics
            field:
              mode: default
              resource: topic
              create: true
              reorderable: true
              type: has_many
              display: Topics
              icon: has_many
              listable: hidden
              instructions_position: above
              visibility: visible
              hide_display: false
              order_column: module_topic.sort_order
title: Modules

Topics blueprint:
tabs:
  main:
    display: Main
    sections:
      -
        fields:
          -
            handle: name
            field:
              type: text
              required: true
              validate:
                - required
          -
            handle: slides
            field:
              mode: default
              resource: slide
              create: true
              reorderable: true
              order_column: sort_order
              type: has_many
              display: Slides
              icon: has_many
              listable: hidden
              instructions_position: above
              visibility: visible
              hide_display: false
title: Topic

What if you change order_column: module_topic.sort_order to order_column: sort_order?
Does that cause an error?

It doesn't cause an error but the sort order is still not saved


Adding getter methods for raw tags and extensions

We need them when we want to extend BladeCompiler and we want to use global settings of Blade that usually we write them in a custom provider for examples: extend blade or
public function register()
{
Blade::setRawTags('{{', '}}');
Blade::setContentTags('{{{', '}}}');
Blade::setEscapedContentTags('{{{', '}}}');
}
Please accept it, thanks

5.0 is closed for changes like this. Please send to 5.1.


Add: Support for wallets without seedphrases for MAYAChain and THORChain

A wallet is trying to integrate Maya protocol.
It is facing a problem, since not all accounts have a seed phrase, hence:
Can you make changes in the transfer method (https://github.com/xchainjs/xchainjs-lib/blob/4860de136791b490b36c1df81b63e4ca0de57589/packages/xchain-mayachain/src/client.ts#L540) to make it work with a private key incase account don't have a phrase with them?
This would apply to Maya as well as THORChain.
Full conversation:

I don't think, we can send tokens using only these utils functions. As, I have to kind of recreate this class (https://github.com/xchainjs/xchainjs-lib/blob/4860de136791b490b36c1df81b63e4ca0de57589/packages/xchain-mayachain/src/client.ts#L79) to use all the methods that we are using in the transfer method (https://github.com/xchainjs/xchainjs-lib/blob/4860de136791b490b36c1df81b63e4ca0de57589/packages/xchain-mayachain/src/client.ts#L540) to make it work for a Private Key wallet.
I can recreate this, but then whenever you will do any change I have to copy those changes on my end, and that doesn't seem to be a good idea.

Can you make changes in the transfer method (https://github.com/xchainjs/xchainjs-lib/blob/4860de136791b490b36c1df81b63e4ca0de57589/packages/xchain-mayachain/src/client.ts#L540) to make it work with a private key incase we don't have a phrase with us?

Now that prepareTx() support is available, this is now possible :)


add Windows compatibility

Hopefully without breaking Linux support ;)
Should fix #2 too, without breaking whichever system required False instead of 0.
If you installed the Topdon Windows software already, you need to switch the driver as explained here:
https://github.com/LeoDJ/P2Pro-Viewer/issues/9#issuecomment-1645982118

It works!  Thank you both so much for your work on this.
I just tested on a TC001 on Windows 11 with USB driver as "USB composite device".

Hi I am new to Python and learning fast to add features today to this project, also very new to GitHub.
I've modified this open contribution further to add working support to save CSV temperature data files. How may I contribute it here?

Fantastic thanks! I am on vacation just now, but will deal with the pull on
my return.
Cheers!
On Fri, 21 Jul 2023, 19:18 nemi1, @.***> wrote:

It works! Thank you both so much for your work on this.
I just tested on a TC001 on Windows 11 with USB driver as "USB composite
device".
—
Reply to this email directly, view it on GitHub
https://github.com/leswright1977/PyThermalCamera/pull/4#issuecomment-1646079316,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG5IEE376ABEO6FNU7OHI7LXRLBV5ANCNFSM6AAAAAA2TEGTDY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Uninstalling the topdon driver so that your camera gets recognized as a USB device enables cv2 and VLC to recognize the camera, then its just a case of getting rid of the r-pi specific code at top

Hi I am new to Python and learning fast to add features today to this project, also very new to GitHub.
I've modified this open contribution further to add working support to save CSV temperature data files. How may I contribute it here?

Hey nemi1, I would be very interested in taking a look at your changes! Can you submit a pull request?

Hi,
I am trying to connect to the cam using this script but it gices me an error. lo = lo * 256 -> Python integer 256 out of bounds for uint8. How can I fix it?

Hi,
I am trying to connect to the cam using this script but it gices me an error. lo = lo * 256 -> Python integer 256 out of bounds for uint8. How can I fix it?

I just find the solution by adding the following line:
thdata = thdata.astype(np.int16)
However, for some reason the image appears rotated, why?


Start fetching a copy of src/buildtools.git into src/xwalk/buildtools.

This is the easiest solution the problem of getting depot_tools to find
clang-format and gn: our checkout process is structured in such a
way that gclient_utils.GetBuildtoolsPath() fails to find the binaries
in src/buildtools since src is actually checked out via
.gclient-xwalk, not .gclient.
This was causing our bots to fail on presubmit checks such as
CheckGNFormatted and CheckPatchFormatted because the binaries which
actually perform those checks were not being found correctly: the
detection only worked if the commands were invoked from src.
While we could set the CHROMIUM_BUILDTOOLS_PATH environment variable
in the bots, the problem would resurface locally for any developer who
tried to run the presubmit checks (or the binaries directly to format
their patches prior to submitting them). Conversely, changing the
directory from which the commands are run in the bots would also lead to
confusion for developers, who would never know that running gn or
clang-format would only work from certain directories.
Instead, we just check out src/buildtools into src/xwalk/buildtools
and fetch the binaries as hooks, which is what several other projects
also do (v8, pdfium, NaCl, ANGLE etc).
Those binaries are preferred over the Chromium ones if one calls them
from the directory above src (such as the bots) or from src/xwalk.
While it could in theory lead to incompatibilities, clang-format is
not changed very frequently upstream and the gn binary is normally
invoked from src anyway so I do not expect any issues to come up.

@heke123 @r0b5t4 @halton

LGTM,  thanks.


License

This is related to the JOSS review. The LICENSE file in the main branch specifies that the license is CC0, which is not OSI approved.
https://github.com/DIDSR/WebXR-tools/blob/bf4271e612cdfcc54294662c5f720ef8874f3f4e/LICENSE#L1-L116

Thanks!


Fixes #599

probably some csslint rule failing.  LGTM, will wait for @blukai 's review

@howardchung That was failing because of commits month ago. Maybe it started checking that just now. Anyway, fixed it.


[Autofix error] UP032 Use f-string instead of format call

Code Example
testing.py
from django.contrib import messages

from apps.user.models import User

def unblock_many(employees):
    return employees

def block_many_in_14_days(user, employees):
    return user, employees

def test_view(request, employees, is_company, action):
    if request.method == "POST":
        if action == "unblock":
            messages.info(
                request,
                ("{} unblock many".format(unblock_many(employees))),
            )
        elif is_company and action == "block-in-14-days":
            messages.info(
                request,
                (
                    "{} block many in 14 days.".format(
                        block_many_in_14_days(
                            request.user, User.objects.filter(employee__in=employees)
                        )
                    )
                ),
            )

pyproject.toml
[tool.ruff]
line-length = 100
exclude = [
    ".git",
    "migrations",
    "frontend",
    "public",
    "lib",
    "lib64",
    "bin",
    ".venv",
]
ignore = [
    "E501",
    "E731",
]
select = [
    "C9",
    "E",
    "F",
    "W",
    "UP",       # pyupgrade
    "I",        # isort
    "RUF100",   # Unused noqa directive
]

CLI
ruff testing.py
testing.py:19:18: UP032 [*] Use f-string instead of `format` call
testing.py:25:21: UP032 [*] Use f-string instead of `format` call
Found 2 errors.
[*] 2 potentially fixable with the --fix option.

ruff testing.py --fix

error: Autofix introduced a syntax error. Reverting all changes.

This indicates a bug in `ruff`. If you could open an issue at:

    https://github.com/astral-sh/ruff/issues/new?title=%5BAutofix%20error%5D

...quoting the contents of `testing.py`, the rule codes UP032, along with the `pyproject.toml` settings and executed command, we'd be very appreciative!

testing.py:19:18: UP032 Use f-string instead of `format` call
testing.py:25:21: UP032 Use f-string instead of `format` call
Found 2 errors.

Version
ruff --version
ruff 0.0.280

@harupy - any thoughts on this one?

Isn't this the issue fixed by #5971?

I'm on master:
> cat a.py
from django.contrib import messages

from apps.user.models import User

def unblock_many(employees):
    return employees

def block_many_in_14_days(user, employees):
    return user, employees

def test_view(request, employees, is_company, action):
    if request.method == "POST":
        if action == "unblock":
            messages.info(
                request,
                ("{} unblock many".format(unblock_many(employees))),
            )
        elif is_company and action == "block-in-14-days":
            messages.info(
                request,
                (
                    "{} block many in 14 days.".format(
                        block_many_in_14_days(
                            request.user, User.objects.filter(employee__in=employees)
                        )
                    )
                ),
            )
> cargo run -p ruff_cli -- check a.py --no-cache --select UP032 --fix
    Finished dev [unoptimized + debuginfo] target(s) in 0.08s
     Running `target/debug/ruff check a.py --no-cache --select UP032 --fix`
Found 1 error (1 fixed, 0 remaining).

                        block_many_in_14_days(
                            request.user, User.objects.filter(employee__in=employees)
                        )

is a multiline expression. Inserting this in an f-string causes a syntax error. #5971 fixed it.

Thank you :)

Cool Thanks.


Don't retry permanent failures

Description
The retrier always retries on error.  However, some errors are permanent, for example NotFound.  This means that if a request is made to get something from the CAS (or GrpcStore AC) which is not there, it keeps trying even though it's still not there.  This defines the set of errors which shoudl be retried and fails otherwise.
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Remote proxy getting data from the action cache now doesn't retry ad infinitum.
Checklist

[ ] Updated documentation if needed
[ ] Tests added/amended
[ ] bazel test //...  passes locally
[ ] PR is contained in a single commit, using git amend see some docs

This change is

-- commits line 4 at r1:
Previously, allada (Nathan (Blaise) Bruer) wrote…
Actually, I'm not sure we should encode this strictly in the code, instead lets make this a config on every retry config.
Then make what you have the default.
The reason is because some S3 store implementations will return NotFound even though the item is there because it's eventual consistency. I is silly, but I've personally seen this and if you delay the read just a few micros it comes into existence.
I suggest make a ErrorRetryMapping struct in the config, but super simple, maybe just:
struct ErrorRetryMapping {
  not_found: bool,
  other: bool,
}

We can add more special cases to this later, and the default with be { not_found: false, other: true }.
Thoughts?

Sure.


Remove the js.Dynamic.x workaround.

The explicit presence of x in js.Dynamic was a workaround for the implicits in Predef that were accidentally providing x on Any.
Since those implicits were removed in 2.11, and we do not support 2.10 anymore, we can remove the workaround.
This surfaces a spectacular scalac bug in one of our tests, which I have not been able to minimize. The problem was already visible with y or any other field not named x, so the explicit js.Dynamic.x was hiding another bug.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/4446/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/6008/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/4450/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/6012/
Test PASSed.


General Error <class 'sqlalchemy.exc.StatementError'>

I did a test connection with my database , it showed it seems ok , i was able to see the tables too , but i clicked on save it is showing :
General Error <class 'sqlalchemy.exc.StatementError'>
error , please let me know what should i do to rectify this error

Without a stackstrace this is unhelpful

Hello Sir ,
what is stacktrace ? can you tell me more about it so that I can provide
you with it to rectify my error
On Wed, Oct 5, 2016 at 1:53 AM, Riccardo Magliocchetti <
<EMAIL_ADDRESS>wrote:

Without a stackstrace this is unhelpful
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/airbnb/caravel/issues/1248#issuecomment-251501853,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATFd9-y1KfDtyzqCNaDF9-F5noleYJpsks5qwrXFgaJpZM4KNpax
.

--
Thanks & Regards,
Name: Mohammed Attaullah Khan
email id<EMAIL_ADDRESS>contact number:+91-8123030179

hello , now i am getting this error :
Traceback (most recent call last):
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
response = self.full_dispatch_request()
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
rv = self.dispatch_request()
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
return self.view_functionsrule.endpoint
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask_appbuilder/security/decorators.py", line 25, in wraps
if self.appbuilder.sm.has_access(permission_str, self.class.name):
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask_appbuilder/security/manager.py", line 730, in has_access
return self._has_view_access(g.user, permission_name, view_name)
File "/home/bitla-hs/venv/local/lib/python2.7/site-packages/flask_appbuilder/security/manager.py", line 721, in _has_view_access
if (view_name == permission.view_menu.name) and (permission_name == permission.permission.name):
AttributeError: 'NoneType' object has no attribute 'name'

will this be helpfull . please let me know asap

@xrmx I am getting the exact same issue. I setup my database connection with this URI
redshift+psycopg2://XXXXXXXXX:XXXXXXXXXX@XXXXXXXX:5439/XXXXXXX
(blanked out all the connection information - security reasons)
I did a [TEST CONNECTION] ... it returned "Seems OK!"
Then when I hit Save I get this error:
General Error <class 'sqlalchemy.exc.StatementError'>
Now this is what I can gather from the server console:
StatementError: (exceptions.AttributeError) 'module' object has no attribute 'DeprecatedIn12' [SQL: u'INSERT INTO dbs (created_on, changed_on, database_name, sqlalchemy_uri, password, cache_timeout, select_as_create_table_as, expose_in_sqllab, allow_run_sync, allow_run_async, allow_ctas, allow_dml, force_ctas_schema, extra, changed_by_fk, created_by_fk) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'] [parameters: [{'expose_in_sqllab': False, 'allow_run_sync': True, 'allow_ctas': False, 'extra': u'{\r\n    "metadata_params": {},\r\n    "engine_params": {}\r\n}\r\n', 'allow_dml': False, 'database_name': u'Test', 'sqlalchemy_uri': 'redshift+psycopg2://[removed URI]', 'cache_timeout': None, 'allow_run_async': False, 'force_ctas_schema': u'', 'password': u'Password123'}]] /usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/compiler.py:575: SAWarning: Can't resolve label reference u'changed_on desc'; converting to text() (this warning may be suppressed after 10 occurrences)   util.ellipses_string(element.element)) /usr/local/lib/python2.7/dist-packages/flask_appbuilder/forms.py:245: FlaskWTFDeprecationWarning: "flask_wtf.Form" has been renamed to "FlaskForm" and will be removed in 1.0.   form = self(obj=obj) /usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/sqltypes.py:562: SAWarning: Dialect sqlite+pysqlite does *not* support Decimal objects natively, and SQLAlchemy must convert from floating point - rounding errors and other issues may occur. Please consider storing Decimal numbers as strings or integers on this platform for lossless storage.   'storage.' % (dialect.name, dialect.driver))
I saw other posts about this issue and instead of resolving they kept getting closed. Let's not close this please. Thank you!

@xrmx @attahkhan016 I ran a
sudo pip install cryptography --upgrade
And this seemed to resolve my issue.

@jayjain89 please don't hijack other issues with unrelated comments, thanks.

@xrmx  this caravel is too sensitive ? as I install in one computer it works okay , next moment it crashes . May I know the reason behind it . As we are planning for a stable BI ?

@xrmx how am I hijacking? I had the exact same issue as @attahkhan016.
Did you not read what I posted?

@xrmx  I am facing new errors every time I install it, in a desktop , laptop or VPS. Sometimes it gets killed on its own or sometimes it states that the dependent packages are old , can you guide me step by step to deploy in a Ubuntu VPS a stable caravel with all the updated packages and lib to have a successful installation .
p.s: Ihave gone through all the installation setup document but it isnt helping .

@jayjain89 you really have a completely diferent issue issue and i'd appreciate a bit more respect please.
Anyway closing in favour of #1411 as it has more info than this issue.


feat(port): add nova

Description
This PR: added port for Nova text editor
Assets

Checklist

[x] PR description included
[x] I've read the documents
[x] I've created or commented in an issue related to this port asking to work on it
[x] I know I shouldn't change any files in the packages folder manually
[x] I've attached an image to the icon of the app that this port is related to
[x] I've attached a screenshot with a good zoom in fullscreen showing this port in action

@DanKlaver15 this red border color can be changed? If so, please update it to the green color as in vscode.

I looked but I wasn’t able to find anywhere to change it. Since Nova is still so new they are updating things like that all the time but their theming is still slightly barebones

Hi @DanKlaver15, are you still working on this PR?

@daltonmenezes I’m sorry for the delay in responding. I haven’t had a chance to work on it and it looks like I won’t in the near future with everything I have going on now.


Add esoft.academy

esoft.academy is another domain for student emails at ESOFT Metro Campus (esoft.lk) which is already added here.

@shageevan Please provide us with a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students.
You can provide us with any of the following:

A copy of instruction (a hard-copy or electronic one) given to you by the school that tells you to use an email address in this email domain
An URL of a page at the official school website that says that students use this email domain
A reference to a recognized journal where an article was published by someone from the school, with explicit affiliation to the school, and e-mail address from the email domain
A WHOIS data that link the email domain to the school somehow
A copy of official letter from the school representative saying that the school provides e-mail addresses in this domain to the students
Anything else that can prove this fact in similar way, i.e. can be verified independently.

Hi,
Please find the screenshot below which shows I'm the admin of ESOFT's Microsoft 365 account and esoft.academy is a part of our tenant.
Screenshot URL: https://www.dropbox.com/s/eqzt1dwmwx0gbso/Screenshot 2021-06-07 at 7.39.59 PM.png?dl=0

@shageevan Thank you for the clarification. Pull request merged.

Thank you very much @philipto.

Hi @philipto !
Even though esoft.academy domain is merged here. It says my email address is not valid. Same happened to my friends also.
Could you please check it?
Thank you!


Difference between LinuxFxVersion & DOCKER_CUSTOM_IMAGE_NAME

The web app has two settings for changing the docker image name.
It's not clear when to chose LinuxFxVersion or DOCKER_CUSTOM_IMAGE_NAME.
Could you please explain the difference please?

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

ID: f970943e-c7b4-919c-65ea-6ba20831e74d
Version Independent ID: 90c5dd06-ea6d-7af8-f88c-9d189e9ceef2
Content: Tutorial: Build and run a custom image - Azure App Service
Content Source: articles/app-service/containers/tutorial-custom-docker-image.md
Service: app-service
GitHub Login: @msangapu-msft
Microsoft Alias: msangapu

Thanks for the feedback @juchom! We are currently investigating and will update you shortly.

Can you share a screen shot @juchom?

Hello,
Here is a webapp with docker where I use LinuxFxVersion only:

and this appsettings:

And here is a webapp using both LinuxFxVersion and DOCKER_CUSTOM_IMAGE_NAME:

Hi @juchom, sorry for the delay. There is no difference between LinuxFxVersion and DOCKER_CUSTOM_IMAGE_NAME. LinuxFxVersion is givien higher precedence but can the app service can fall back to DOCKER_CUSTOM_IMAGE_NAME should LinuxFxVersion be blank. DOCKER_CUSTOM_IMAGE_NAME is also an app setting that's entered in by the user and not added programmatically.
Hope this helps. If not, please feel free to reopen the issue and mention me in the comment.

Where is this documented at? All the documentation for using Docker images is not consistent with how to manage updating the docker image:tag either programmatically or manually

Thanks for the feedback @antempus. I'll pass your feedback along to the appropriate teams and get back with any updates. I've also assigned this issue to the content author so we can address the inconsistencies.

https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet#custom-containers doesn't have DOCKER_CUSTOM_IMAGE_NAME environment variable documented at all anymore. What's the correct way of updating an image from the Azure Portal if we can't use DOCKER_CUSTOM_IMAGE_NAME?


enum vs const enum - order matters

This code is compiled okay:
enum W {
    A = 1
}

const enum Q {
    A = 1,
    B = W.A | A
}

This code produces a compiler error:
const enum Q {
    A = 1,
    B = W.A | A
}

enum W {
    A = 1
}

Seems not to be very nice to depend on declarations order in this case.

The same happens even for two const enums.
const enum Q {
    A = 1,
    B = W.C | A
}

const enum W {
    C = 1,
    A = C | Q.A
}

An open question here: what behavior should we have in case of cycles:
const enum A {
    X = B.X
}

const enum B {
    X = A.X
}

should it be an error or should we implicitly break the cycle and use some default value instead of the actual one?
Current behavior does not have this problem and is consistent across const and regular enums. I'm going to convert this issue into the suggestion to alter existing behavior and pick reasonable strategy to deal with cycles.
One this that is definitely wrong in current implementation is error message, it is not really helpful:
const enum A {
    X = B.X // in 'const' enum declarations member initializer must be constant expression
}

const enum B {
    X = 1
}

I'll file a separate issue to fix the message

Error message issue #3963

This is just what we want to happen


Bug(multiple-rules): Inline element sorting may result in fix that breaks compilation/runtime

Describe the bug
This issue is related to inline sorting, and affects:

sort-classes
sort-interfaces
sort-object-types
sort-imports
sort-exports
sort-switch-case

Code example
type Type = {
  b, a
}

This results in the following autofix, which breaks compilation:
type Type = {
  a b,
}

Inlining } with the last member will make the rule work however:
type Type = {
    a, b }

Even worse:
type Type = {
  b,a
}

will get sorted into
type Type = {
  ba,
}

Other example with sort-classes:
class Class {

    method(){}property: string

}

This is ugly, but it compiles and runs! It gets formatted into
class Class {

    property: stringmethod(){}

}

ESLint version
8.57.0
ESLint Plugin Perfectionist version
3.9.1
Additional comments
No response
Validations

[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

Fixed in a3804b81fdf48d0672645e5c21fd61061711f25e.
Released in v4.0.0.
Thank you!


window.performance missing in ClientFunction

What is your Test Scenario?
I want to get window.performance object with data inside
What is the Current behavior?
Its empty
What is the Expected behavior?
Will be filled with the same data as i have inside the browser when i inspect the test using .debug()

What is your web application and your TestCafe test code?
test('timing works', async t => {
  const getLoadTime = ClientFunction(() => performance.timing);
  console.log(await getLoadTime());
});

Your website URL (or attach your complete example):
https://www.example.com
Steps to Reproduce:
Use example code above to see {} as a result instead of whats actually in the browser.
Your Environment details:

testcafe version: 1.1.0
node.js version:  10.13.0
command-line arguments:  npx testcafe chrome
browser name and version: chrome 72
platform and version:        mac os 10.13.6

I've reproduced the problem. performance.timing stores all its properties in the prototype, not in the object. The replicator package used by TestCafe for serializing objects and transferring them from a browser to the test code doesn't support this case yet. Thus I've created a feature request in the replicator repository: https://github.com/inikulin/replicator/issues/7.
As a workaround, you can use JSON.stringify/JSON.parse:
const getLoadTime = async t => JSON.parse(await t.eval(() => JSON.stringify(window.performance.timing)));

console.log(await getLoadTime(t));

Thank you :)

Hi Guys,
I want to get window.performance.memory object with data inside in TestCafe.
This "window.performance.memory" returns memory stats in Browser Console and I am not able to get the same through TestCafe.
Can you please help me here?

Hi @rakeshkumartripathy,
window.performance.memory's properties are non-enumerable, so JSON.stringify ignores them. You can adjust Andrey's sample like this:
const getMemory = async t => JSON.parse(await t.eval(() => {
	const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = window.performance.memory;
	return JSON.stringify({ jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize });
}));

Thank you @alexey-lin


Extension host terminated unexpectedly 3 times within the last 5 minutes.

Type: Bug
My extension keeps terminating for some reason.  This is so annoying

same here. Issue started happening today. Didn't install any new extensions in the last days. However Pylance seems to take a lot of memory 1GB. Using WSL2 backend.

Same

Not sure, if this is relevant, but after I disabled Github Copilot extension, looks like the issue is gone (at least for the last couple of hours it's not crashing)
I am on WSL2

It is so frustrating that I have to reload just to expect a crash with in 5 mins or less.
please fix this ASAP

Not sure, if this is relevant, but after I disabled Github Copilot extension, looks like the issue is gone (at least for the last couple of hours it's not crashing)
I am on WSL2

Yes, I have done the same and the sun shines again.

Not sure, if this is relevant, but after I disabled Github Copilot extension, looks like the issue is gone (at least for the last couple of hours it's not crashing)
I am on WSL2

Same here, thanks for the fix!

Not sure, if this is relevant, but after I disabled Github Copilot extension, looks like the issue is gone (at least for the last couple of hours it's not crashing)
I am on WSL2

same here been having this issue for a week now, it's annoying

Related question on Stack Overflow: Extension host terminated unexpectedly 3 times within the last 5 minutes

Same here. Having this issue for about a week. Quite unfortunate.

Can users provide the following 2 logs,

Open Developer: Toggle Developer Tools and attach the generated log when extension host terminates
Start the application following the steps at https://github.com/microsoft/vscode/wiki/Native-Crash-Issues#creating-a-crash-report and attach the generated crash logs if available.

I get a log of things from the developer tool, unsure which one to share. Let me know if that one help
abstractExtensionService.ts:931 Extension host (LocalProcess) terminated unexpectedly. Code: 7, Signal: unknown

[Extension Host] (node:15816) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `Code Helper (Plugin) --trace-deprecation ...` to show where the warning was created)

Code: 7 seems like an exit due to OOM, @TeddyCr can you launch the application with code --verbose and attach the logs once extension host terminates.

It would be great if you can share all the logs printed to the terminal, if not can you check for a line that has the following crashed with code 7 and reason .... I am mainly looking to confirm the value of reason.

@deepak1556 Does this help? I have cut two pieces of the crash that seem relevant. The full log is huge and has details of the propietary code I am working on  (file paths mainly but still) . If this doesn't help I can try reproducing it while working on OS code later on and post a full log.
[85241:0315/115637.093965:INFO:CONSOLE(615)] "%c  ERR color: #f33 [Extension Hos
t] Error: spawn flow ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
    at onErrorNT (node:internal/child_process:478:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)", sou
rce: vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/R
esources/app/out/vs/workbench/workbench.desktop.main.js (615)
[85241:0315/115637.094001:INFO:CONSOLE(90)] "%c[Extension Host] %cError: spawn f
low ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
    at onErrorNT (node:internal/child_process:478:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) %c(at
 console.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/ap
p/out/vs/workbench/api/node/extensionHostProcess.js:96:138784)) color: blue colo
r:  color: grey", source: vscode-file://vscode-app/Applications/Visual%20Studio%
20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js (90
)
[85241:0315/115637.094292:INFO:CONSOLE(90)] "%c[Extension Host] %cError: An exte
nsion called process.exit() and this was prevented.
    at process.C.process.exit (/Applications/Visual Studio Code.app/Contents/Res
ources/app/out/vs/workbench/api/node/extensionHostProcess.js:122:14225)
    at gracefulExit (/Users/nacho/.vscode/extensions/rbbit.typescript-hero-3.0.0
/node_modules/winston/lib/winston/exception-handler.js:194:17)
    at /Users/nacho/.vscode/extensions/rbbit.typescript-hero-3.0.0/node_modules/
async/internal/once.js:12:16
    at iteratorCallback (/Users/nacho/.vscode/extensions/rbbit.typescript-hero-3
.0.0/node_modules/async/eachOf.js:60:13)
    at /Users/nacho/.vscode/extensions/rbbit.typescript-hero-3.0.0/node_modules/
async/internal/onlyOnce.js:12:16
    at onetime (/Users/nacho/.vscode/extensions/rbbit.typescript-hero-3.0.0/node
_modules/one-time/index.js:23:16)
    at File.<anonymous> (/Users/nacho/.vscode/extensions/rbbit.typescript-hero-3
.0.0/node_modules/winston/lib/winston/exception-handler.js:213:11)
    at Object.onceWrapper (node:events:646:26)
    at File.emit (node:events:538:35)
    at File.emit (node:domain:475:12)
    at File.logged (/Users/nacho/.vscode/extensions/rbbit.typescript-hero-3.0.0/
node_modules/winston/lib/winston/transports/file.js:130:12)
    at afterWrite (/Users/nacho/.vscode/extensions/rbbit.typescript-hero-3.0.0/n
ode_modules/readable-stream/lib/_stream_writable.js:491:3)
    at processTicksAndRejections (node:internal/process/task_queues:85:21) %c(at
 console.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/ap
p/out/vs/workbench/api/node/extensionHostProcess.js:96:138784)) color: blue colo
r:  color: grey", source: vscode-file://vscode-app/Applications/Visual%20Studio%
20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js (90
)
[85241:0315/115637.094603:INFO:CONSOLE(90)] "%c[Extension Host] %cError: An exte
nsion called process.exit() and this was prevented.
    at process.C.process.exit (/Applications/Visual Studio Code.app/Contents/Res
ources/app/out/vs/workbench/api/node/extensionHostProcess.js:122:14225)
    at /Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/out/client
/src/extension.js:25:11576
    at Object.onfulfilled (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10829)
    at /Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/out/client
/src/extension.js:4:10128
    at Array.forEach (<anonymous>)
    at e._executeHandlers (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10059)
    at e._setResult (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2
.18/out/client/src/extension.js:4:9849)
    at _resolve (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/
out/client/src/extension.js:4:9633)
    at Object.onfulfilled (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10827)
at /Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/out/client
/src/extension.js:4:10128
    at Array.forEach (<anonymous>)
    at e._executeHandlers (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10059)
    at e._setResult (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2
.18/out/client/src/extension.js:4:9849)
    at _resolve (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/
out/client/src/extension.js:4:9633)
    at Object.onfulfilled (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10829)
    at /Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/out/client
/src/extension.js:4:10128
    at Array.forEach (<anonymous>)
    at e._executeHandlers (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10059)
    at e._attachHandler (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code
-0.2.18/out/client/src/extension.js:4:9938)
    at /Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/out/client
/src/extension.js:4:10756
    at new e (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/out
/client/src/extension.js:4:10229)
    at e.then (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/ou
t/client/src/extension.js:4:10734)
    at e._setResult (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2
.18/out/client/src/extension.js:4:9791)
    at _resolve (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/
out/client/src/extension.js:4:9633)
    at Object.onfulfilled (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10827)
    at /Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/out/client
/src/extension.js:4:10128
    at Array.forEach (<anonymous>)
    at e._executeHandlers (/Users/nacho/.vscode/extensions/redocly.openapi-vs-co
de-0.2.18/out/client/src/extension.js:4:10059)
    at e._setResult (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2
.18/out/client/src/extension.js:4:9849)
    at _resolve (/Users/nacho/.vscode/extensions/redocly.openapi-vs-code-0.2.18/
out/client/src/extension.js:4:9633)
    at Timeout.<anonymous> (/Users/nacho/.vscode/extensions/redocly.openapi-vs-c
ode-0.2.18/out/client/src/extension.js:4:38849)
    at listOnTimeout (node:internal/timers:559:17)

And
[85241:0315/115637.378093:INFO:CONSOLE(615)] "%c  ERR color: #f33 [Extension Host] Error: spawn flow ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
    at onErrorNT (node:internal/child_process:478:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)", source: vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js (615)
[85241:0315/115637.378124:INFO:CONSOLE(90)] "%c[Extension Host] %cError: spawn flow ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
    at onErrorNT (node:internal/child_process:478:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) %c(at console.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:96:138784)) color: blue color:  color: grey", source: vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js (90)
[85241:0315/115637.387262:INFO:CONSOLE(2605)] "Extension host (LocalProcess) terminated unexpectedly. Code: 7, Signal: unknown", source: vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js (2605)
[85241:0315/115637.400433:INFO:CONSOLE(615)] "%c  ERR color: #f33 Extension host (LocalProcess) terminated unexpectedly. No extensions were activated.", source: vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js (615)
[85241:0315/115637.400803:INFO:CONSOLE(747)] "Extension host terminated unexpectedly 3 times within the last 5 minutes.", source: vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js (747)```

👋 , since we just merged a lot of issues into this one as duplicate: has anyone been able to figure out a pattern that reproduces this issue reliably? We in our team all use Copilot on the same version and so far have not yet hit this issue.
Is it just using Copilot over some time in the editor when it randomly happens? Are there any settings configured around Copilot or editor suggest that might have an impact?

For me the extension host always terminates when I do a git commit via vscode, when I disable Github Copilot (or just for 'git-commit'), the crash doesn't happen anymore.
Of course, there will be a small probability of termination at other times

The same issue. It's related to a new version of the Copilot.
Try to downgrade the Copilot version to 1.76.9071

Can anyone reproduce this issue with the previous Copilot version 1.76.9071? You can change extension version by opening the Extensions viewlet, right click on Copilot > Install Another Version.

@Gerrnperl thats a very nice small repro, which unfortunately I cannot reproduce. Curious, when you observe the memory used by "utility process" when the "Process Explorer" is opened (from "Help" menu), does that memory suddenly go to a very large value and then restart the process?

Can anyone reproduce this issue with the previous Copilot version 1.76.9071? You can change extension version by opening the Extensions viewlet, right click on Copilot > Install Another Version.

@isidorn
For me, the previous version of Copilot didn't cause this issue.

Same for me 1.76.9071 works as expected. As soon as I upgrade to the latest version the extension host eventually crashes within a few minutes.

@Gerrnperl thats a very nice small repro, which unfortunately I cannot reproduce. Curious, when you observe the memory used by "utility process" when the "Process Explorer" is opened (from "Help" menu), does that memory suddenly go to a very large value and then restart the process?

"utility process" took up about 400 MB at the time of the crash
I'm not sure if this is "unusually large", but with Copilot disabled, the utility process memory usage fluctuates between 100 MB and 350 MB (and sometimes rarely exceed 400 MB)

@Gerrnperl thanks, could you quit VS Code, run code --verbose, reproduce the issue and then send the logs as Zip from that session (e-mail is fine, its viewable on https://github.com/bpasero). You can find the logs folder from this command:

And it would be the most recent folder entry (every session gets their own folder).

@bpasero I have reproduced the bug with --verbose flag and sent you zip by email

for folks  who saw this issue  on Copilot version 1.77.*,    could you re-enable the latest version and check if the issue still persists ?
if yes, would it be possible to send the logs using the  steps mentioned by @bpasero  above

+1 for @abgoswam comment from above. We have identified a potential experiment that was causing the problem, and we have turned it off just now. We now believe the issue is fixed. Thus - please try again and let us know if you still see the problem. Thanks all!

Thanks for the fix! So far so good for me.

@a-r-j thanks for verifying.
I am going ahead and closing this issue. If anybody is still seeing Extension Host crashes with Copilot do let us know and we will reopen this issue. Thank you all for your help!

my problem was fixed. above 1.77.*

@verveguy do F1 > extension bisect. Most likely another extension is causing it, or it is another Copilot issue. In which case - fell free to open a new issue. Thanks

I also had this issue mine was a complete breakdown of my WSL2 install due to windows refusing to mount the virtual disk anymore. I have no solution at this time but this is possibly caused by WSL2.


How Can I kill/stop the Schedule

return schedule.CancelJob on the job function

Thanks @WoLfulus! That's exactly what I was going to recommend :)
@AvinashBakshi: Also check out this question in the FAQ: https://github.com/dbader/schedule/blob/master/FAQ.rst#how-can-i-run-a-job-only-once
Thanks for your question. Closing this so we can keep the tracker clean of loose ends. Feel free to follow up (or make a separate issue) with more questions/discussion 😃


Add a schema for validating pipeline configuration

When we load a taxonomy yaml file, we validate its contents against a schema contained in instructlab.schema.  Here is an example schema:
https://github.com/instructlab/schema/blob/main/src/instructlab/schema/v2/knowledge.json
There's some code for loading this schema and validating with it in instructlab.sdg.utils.taxonomy.
It would be nice if we did something similar when we load a pipeline yaml. It can help catch subtle mistakes. We could also provide instructions for how to check a configuration against the schema manually before trying to run it.
Here is a start at what a schema could look like for pipeline configs (auto-generated, not tested yet).
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "version": {
      "type": "string"
    },
    "blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "config": {
            "type": "object",
            "properties": {
              "config_path": {
                "type": "string"
              },
              "output_cols": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": ["config_path", "output_cols"]
          },
          "gen_kwargs": {
            "type": "object",
            "properties": {
              "temperature": {
                "type": "number"
              },
              "max_tokens": {
                "type": "integer"
              },
              "n": {
                "type": "integer"
              }
            }
          },
          "drop_duplicates": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": ["name", "type", "config"]
      }
    }
  },
  "required": ["version", "blocks"]
}

I can't say I love how verbose the schema file is...
One thing I have in mind for this is automating the validation of custom pipeline configs in other repos. Those are not as easy to test when code in the repo is changes, so I'm hoping this can help catch some accidental compatibility breakages that merge into the tree that don't affect configs in tree, but might affect custom ones elsewhere.


ROX-11836: Network Policy Recommendation

Description
This PR introduces a new subcommand to roxctl: roxctl generate netpol <folder-path> --offline.
It uses the Cluster Topology Analyzer from NP-Guard for this functionality.
Currently, it is in a preliminary (Tech Preview) state, but ROX-11623 introduces unit tests, robust error handling, and additional improvements like more file output options.
We don't want to announce the new capability just yet, as it is very limited in its first iteration.
An entry to the changelog and docs will follow once we're able to recommend Network Policies that adhere to all System Policies defined in a connected ACS Central. This is a follow-up feature that is scheduled for 3.73.
Checklist

[ ] Investigated and inspected CI test results
[ ] Unit test and regression tests added -> Follow up in ROX-11774
[ ] Evaluated and added CHANGELOG entry if required ->Skipping for now, until we have full online capability
[x] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

Testing Performed
To test the new functionality, point roxctl generate netpol to any folder containing any pod-creating YAML resources.
It will recursively scan all YAMLs and generate a list of recommended Network Policies to stdout.
git clone https://github.com/nadgowdas/microservices-demo /tmp/microservices-demo
./roxctl netpol generate /tmp/microservices-demo

Observe the recommended Network Policies being generated and printed to stdout.

Rebasing to latest master to benefit from longer image retention on quay

/test all

Interesting run bin/darwin/roxctl generate netpol / 😂  - we need to think about a --depth parameter

/woof

LGTM 🚀 4min late 😢

@lvalerom Here, have a pupper for your troubles. It's at least something 😅


collision: 3.5.0 -> 3.6.0

Description of changes
Update version

Things done

Built on platform(s)

[ ] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

blocked until https://github.com/NixOS/nixpkgs/pull/247766 is merged

blocked until #247766 is merged

Yes, I marked this PR as draft because i'm waiting gtk4 and libadwaita updates. My commit with these updates is just for testing.

ofborg-eval failed, but i can't understand why and it doesn't seem to be my fault imo.

@ofborg eval
Hm weird indeed, and doesn't seem to be persistently broken on master, let's check if it is still a failure to be sure.


Map to shared memory

Is your feature request related to a problem? Please describe.
I currently have a use case where I'd like multiple (python) processes to access the stream - e.g. one running machine learning, and one providing a live stream. I know I can do this as-is in a single process (main + lores, different encoders etc.) but experience tells me that this means you often end up mixing code (e.g. your machine learning code now has a webserver in it), and mixing patterns (e.g. async and non-async for machine learning / web server has been fun in the past). You also end up managing separate processes with exclusive access to the camera and ensuring they're not running concurrently. And single mega-processes are trickier to dev/debug ... not only are they more complex with lots of moving parts, but things can contend in unusual ways (and you have to be careful not to block the main picamera loop or you'll miss frames) ... but you've got to run on a pi. (I.e. if we're using /dev/shm I could just generate fake frames and all my client code wouldn't know the difference ... which I've done before with mock video on disk, but it's still a bit coupled.)
Describe the solution you'd like
What I think might be 'best' is a single camera service on the host, and all it does is spit the main/lores data to shared memory (and optionally record to disk if you want that). Then any process (in any language) can do what they want with the frames. I've implemented this as a basic memory mapped pseudo ring buffer using posix_ipc - and I can write 1080x1920x3 arrays on a pi zero 2w in about 6ms. So that'll work. I also have a need for buffering, so I keep the last N frames in the buffer ... and this solution gives me that for free. (Put another way, I'm not worried about excess memory as I'm already doing that.) However, I suspect I'm doing unnecessary memory copies, as picamera is also copying memory around (and also using mmaps etc.) - and I suspect picamera and I are both buffering the same thing. (Unlikely to be a major performance/memory hit.)
So, the request: is there currently an easy way to replace the allocators inside of picamera2 to use my own on /dev/shm, in a way I could access nicely from other processes? I can see there are definitely allocators etc. - I'm just not sure if they're as generic as I want, or which one to start with. I current serialize/deserialize the various independent things into a single frame (i.e. main + lores + metadata), but individual buffers would be fine instead as long as they're relatable in some way (e.g. by frame index or capture timestamp).
I am not suggesting building a generic RPC solution in picamera2 etc. - that can happen elsewhere, and is more complicated (what if two processes want cameras that are configured differently? etc.). Just whether I can use my own allocator in /dev/shm that would support that.
Describe alternatives you've considered
I don't think this is too relevant beyond what I've covered. All other IPC solutions will still involve copies, so it comes back to the allocator. Probably the main alternative would be going this in libcamera as the source for getting frames into /dev/shm, and python is just a consumer. But that won't be easy (for me at least). The other alternative is sticking with what I've got ... it should be fine.
Additional context
Not really. The main use will be streaming machine learning sized frames (i.e. low res) around, some going to machine learning (potentially multiple models), some to configuration, and maybe some being recorded. Performance, power consumption, and nice code are high priority, memory utilisation not so much (beyond limits of the Zero 2 W).

Hi, thanks for your post.
The question of exporting buffers to other processes is not one I've looked out, and (disclaimer!) I don't know too much about it.
The image buffers that come out of the camera system are dmabufs, so (according to my understanding of all this) it should be possible to share them between processes. I assume there are standard Linux runes for doing this that Python exposes by some means. If anyone were to produce a simple example of this, I'd be delighted to include it among our examples and in our documentation.
Obviously there are risks in all this - so long as another process is using the buffer then you can't recycle it back to the camera, so things my stall or get corrupted. Possibly you can mitigate this by allocating more and more buffers, or perhaps there comes a point where you have to take the hit and copy them.
Picamera2 does have an allocator class (as you've discovered), and in fact our next release (currently on the "next" branch) will have another flavour of allocator too. Whether this is enough to help you already I couldn't say, but we're certainly open to extending what we have if that's going to be useful - but we'd have to know what extensions to make.
Another point of interest is that parts of the Linux world regard cameras as a system resource which needs to be handled by some kind of server, which multiple clients can then talk to. The direction this seems to be heading in is Pipewire, and indeed the expectation is that libcamera will be integrated into other application (web browsers, for example) through Pipewire. One day this may even enable things like Google Meet to work with libcamera-based cameras. So there may be some overlap here too, though I don't know how useful that is in your case.

Thanks @davidplowman . I don't know a heap about it either - it's driven by necessity = )

Obviously there are risks in all this - so long as another process is using the buffer then you can't recycle it back to the camera, so things my stall or get corrupted. Possibly you can mitigate this by allocating more and more buffers, or perhaps there comes a point where you have to take the hit and copy them.

I try to have my processes read and then release the shared memory which, for 1920x1080 RGB is about 6ms on the Pi Zero 2, so plenty of wiggle room. But yes, since I want a buffer anyway, the client just reads as fast as it can, or takes the oldest frame if it's that far behind. So it shouldn't ever block the main camera. This design kind of prevents that actually - whereas when you're in a normal python example, you've either got to ensure your processing runs fast, or do the cleverer tricks anyway (separate thread filling up a queue etc.).

Picamera2 does have an allocator class (as you've discovered), and in fact our next release (currently on the "next" branch) will have another flavour of allocator too. Whether this is enough to help you already I couldn't say, but we're certainly open to extending what we have if that's going to be useful - but we'd have to know what extensions to make.

Thanks, I'll try have a quick look. I suspect I'll eventually realise it'll be really easy or not at all.

The direction this seems to be heading in is Pipewire ...

Oooh that looks cool! I'm somewhat dubious as it's hard for a bit of software to do all things and also do everyone's specific use case as fast as possible - but I also suspect it'll be fine here, especially as I'm generally sending around smaller frames. And I'd like not writing my own code.

OK, I'm just looking into this again after looking at the change log and reading about the new persistent allocator, and then about the DMA heap etc. This is largely doing what I'm doing with shared memory, so it'd be nice to merge them. Can you check my thinking?

We use the DMA heap because it's faster (??), so it makes sense vs /dev/shm (??)
I think I mostly get the libcamera request flow. I'm assuming each buffer contains the pixels etc., but also some metadata like the frame number or timestamp. (Is there a reference for this? I didn't find libcamera python docs.)

So, I'm thinking:

Use the existing DMA buffers, but with e.g. 100 buffers. Leave the existing libcamera pipeline to fill them.
Share the buffer somehow - it looks like you can share DMA, though that needs investigating! Let's assume it works for now. As a new request is processed in picamera2, I'll update some shared interprocess state (e.g. "request 57 contains frame 1818").
In the other process(es), I can somehow enumerate those 100 buffers. Then, if I want frame 1818, I query the aforementioned shared store, and figure out it's request 57, which I can then read from DMA.
Locking as appropriate. I'm not sure I have any ability to force libcamera to block writing to a DMA while I read it, so it might just have to be best effort (and e.g. check the frame timestamp after accessing). I guess it depends on how the DMA sharing works.

Does that seem reasonable, or have I missed something? The main bit to investigate seems to be how to share DMA from python.

OK, I'm just looking into this again after looking at the change log and reading about the new persistent allocator, and then about the DMA heap etc. This is largely doing what I'm doing with shared memory, so it'd be nice to merge them. Can you check my thinking?

We use the DMA heap because it's faster (??), so it makes sense vs /dev/shm (??)

Can't say I specifically know about that, but in our experience using the DMA heap is best because it can be shared directly between hardware (which needs special contiguous buffers) and the CPU because it can read them through the data cache (though you have to signal when the CPU is going to use the buffer). The default libcamera buffers can't be read through the data cache, so accessing them is much slower.
Even just copying the buffers is faster if they go through the data cache, I think that might have a wider path to memory than the uncached route, even though for a straight copy, the cache in itself isn't useful.

I think I mostly get the libcamera request flow. I'm assuming each buffer contains the pixels etc., but also some metadata like the frame number or timestamp. (Is there a reference for this? I didn't find libcamera python docs.)

That's correct. Whilst libcamera provides Python bindings, it doesn't actually make an official package for them, and the documentation for all of libcamera (particularly when it comes to "how do I use this?" rather an auto-generated API documentation) is not copious.
Reading the Picamera2 manual in detail might help, perhaps I should consider a "how does libcamera work" section in there.

So, I'm thinking:

Use the existing DMA buffers, but with e.g. 100 buffers. Leave the existing libcamera pipeline to fill them.

I don't think you're going to be able to allocate 100 buffers (certainly not on a Pi 4 or earlier). As I explained, they're "special" buffers and contiguous memory is in short supply. The number you can allocate obviously depends on how big the images are, but the range is likely to be from one or two (very large images) to a dozen or couple of dozen (much smaller images).

Share the buffer somehow - it looks like you can share DMA, though that needs investigating! Let's assume it works for now. As a new request is processed in picamera2, I'll update some shared interprocess state (e.g. "request 57 contains frame 1818").
In the other process(es), I can somehow enumerate those 100 buffers. Then, if I want frame 1818, I query the aforementioned shared store, and figure out it's request 57, which I can then read from DMA.
Locking as appropriate. I'm not sure I have any ability to force libcamera to block writing to a DMA while I read it, so it might just have to be best effort (and e.g. check the frame timestamp after accessing). I guess it depends on how the DMA sharing works.

So long as the the process running Picamera2 doesn't release the request, then it's safe for you to hang on to those buffers. When you get a request through capture_request, it records a "use" of the buffer, so it can't be re-used by libcamera until you do a release. Of course, as I said previously, 100 buffers sounds unlikely...

Does that seem reasonable, or have I missed something? The main bit to investigate seems to be how to share DMA from python.

On a Pi 4 or earlier, I don't think you'll be able to get that many buffers. However, you probably have the option of creating lots "memfd" buffers which you could share between processes, though I think you'd always have to take the hit of a copy from the libcamera dmabuf to the memfd buffer. (I expect this is a lot like creating a file in /dev/shm, not exactly sure what the differences are.)
Note that on a Pi 5 you probably can have lots more camera dmabufs. That's because a Pi 5 has an IO MMU so it can use "regular" memory, not special contiguous memory, with the hardware.

Great, very helpful thanks! The automatic releasing is nice, and confirmation I get can frame timestamp info etc.

Whilst libcamera provides Python bindings ...

Do you generally just look at the libcamera C++ classes and know they're pybind11'd? I.e. how do you develop against libcamera in python?

I don't think you're going to be able to allocate 100 buffers (certainly not on a Pi 4 or earlier).

Ah, right. Is there significantly more data stored in the buffer than the pixel information? E.g. YUV 512x768 is (I think) about 600kb, so 100 images should only be around 60mb. I might need to increase the CMA heap, but that's still well within the realms of a 512mb device. I assume it packs both streams in there (if they're used), but e.g. I'm usually doing main as 512x768 and lores as 192x256, so it won't be a big difference. It currently works in shared memory, but CMA might be different.
FWIW my use case is generally lower power things, so I'm focusing on the Pi Zero 2W. The interest in buffers is because it's not as grunty as the pi 5 so can get a bit behind in processing occasionally, and the shared memory/buffers is just to make code development a lot nicer ... not needing a big monolith etc.

Great, very helpful thanks! The automatic releasing is nice, and confirmation I get can frame timestamp info etc.

Whilst libcamera provides Python bindings ...

Do you generally just look at the libcamera C++ classes and know they're pybind11'd? I.e. how do you develop against libcamera in python?

Generally the Python bindings don't change much, so Python code tends to be fairly stable. The only catch is that libcamera beneath is not so stable, so one version of libcamera is generally not compatible with another even though the Python API looks identical. This is why I always recommend updating libcamera and the Python bindings together using apt, we always keep those versions in step.

I don't think you're going to be able to allocate 100 buffers (certainly not on a Pi 4 or earlier).

Ah, right. Is there significantly more data stored in the buffer than the pixel information? E.g. YUV 512x768 is (I think) about 600kb, so 100 images should only be around 60mb. I might need to increase the CMA heap, but that's still well within the realms of a 512mb device. I assume it packs both streams in there (if they're used), but e.g. I'm usually doing main as 512x768 and lores as 192x256, so it won't be a big difference. It currently works in shared memory, but CMA might be different.

I suppose you'll have to try it and see. Your buffers are small, so you may have more luck. There are some other buffers that get allocated too, such as the raw camera buffers. Depending on the sensor and sensor mode, these may or may not be large. But certainly give it a try.

FWIW my use case is generally lower power things, so I'm focusing on the Pi Zero 2W. The interest in buffers is because it's not as grunty as the pi 5 so can get a bit behind in processing occasionally, and the shared memory/buffers is just to make code development a lot nicer ... not needing a big monolith etc.

Pi Zero 2W is of course always a bit short on memory. It's worth checking what your CMA heap is like (grep Cma /proc/meminfo I think). There may be some scope to increase it - again, you'll have to try. On a regular Pi 3 with 1GB, you could probably push it to 512MB. You could try 384MB on a Zero 2W (if it's less that that by default). The system can still use the CMA heap so it might still work. Or it might not boot. Like everything else really - try it and see.

OK, while recording at 768x1024 (in binned mode) it's using about 50mb (based on the change in CmaFree from /proc/meminfo). If I record 256x256 it's still 50mb. So it does seem like maybe there are raw frame buffers being allocated, which makes sense if this is about shuffling frames between hardware etc.
Going to 12 buffers uses 60mb. 24 buffers is about 90mb. 100 buffers it can't allocate enough.
So I think this rules out naively increasing the buffer count, because it uses more memory than just rolling my own (and only sharing the streams). I may still use DMA bufs though, as it might be a bunch faster - and maybe there's a quick way to copy out only the stream information from the picamera2 buffers, and into my own. I'll keep this issue open for now as it's potentially easy to do and would make a nice example - even though a full solution is probably outside the scope of picamera2.

It seems like using DMA is faster for smaller bits of memory (e.g. 50kb vs 10mb), though it's not an apples-to-apples test so may not be fair.
Any tips on how I'd access an existing dma buffer from a separate process? I was (naively) hoping I could just pass the fd to another process and then mmap it, but no luck. Do you know of any examples that could point me in the right direction? I've not dealt with dma buffers (or ioctls etc.) before, and my googling isn't proving fruitful.

Indeed, you can't just pass an fd as a number to another process and use it. This isn't really something I know a great deal about. However...
If you're using Python, I think the multiprocessing module has built-in support for creating shared memory buffers. I expect this is probably the easiest route, though I haven't used it myself so there may be pitfalls I don't know about!
If you're not using Python, I think things get more complicated. The easiest thing is probably to open your fds and then fork the process. Alternatively, it is possible to pass fds from one process to another. There appear to be some unreasonably complicated looking mechanisms (to my eyes, at least!) that involve sending the fd through a socket, and it will get "translated". More recently there's something called pidfd_getfd so perhaps that would be the way to go, though you'd have to read up how to use that.

Cool, the approach from above definitely works! I'd still need to implement the bit to copy off the parts I need from the picamera2 buffers as requests are processed, but that seems straightforward enough. Main issue I foresee would be managing the buffers (what happens when one process dies and the other still holds them) etc.

I'm going to close this, but it's worth noting:

It works just fine! Didn't have any issues with other processes having things open or whatnot.
It was a lot faster.
Not sure if there's a way to copy/write from one mm directly to another, but given we're reading off mmap'd DMA buffers in make_buffer etc, we could possibly skip reading into userspace (if that makes sense) to make it even faster.

I decided to move away from shared memory in the end, mostly because IPC was getting really messy, as was having a single camera process managing various requests and trying to handle them sensible (e.g. when 3 different processes want different resolutions ... and they request them at different times) ... and trying to keep power consumption down. My scenario is inflexible enough to keep it simple = )

Thanks for the update. I don't suppose you might have have a short example that shows how you can pass these buffers around that could be added to the examples folder? I think something like that would be helpful to other users (and me!). But no worries if not!

I tidied it up a bit for you - #1046 is built off my original benchmarking script. Have a play with the numbers you see and let me know what you think. For the default arguments on a normal Pi Zero 2W, I'm getting 1.1ms write time, 2.2ms read time, and 2.3ms latency from start of write to end of read. (Yes, it's shorter than the two combined, but that's cos it can read before it's finished writing, etc. I guess I could remove that. Eh.)
Note the comments at the start - e.g. I require you to manually specify the PIDs, but I was using ZeroMQ for the IPC when I was using it to handle all that.
See what you think of it. It's possibly useful in a few places in the code e.g. the circular output (especially if the buffers are coming from memmapped DMA already so get to use the cache? Not sure), or maybe a bunch of internal optimisations, or feature additions (e.g. have a threaded reader that buffers e.g. 20x frames, so if you have the occasional slow process on a request, it doesn't cause dropped frames etc.).


Optional parameters broken in 13.0

I just upgraded one of my projects to 13.0, and it seems that optional parameters on routes are now broken?
For consistency sake, I was using this syntax for optional params:
get :myroute, :with => '(:optparam)' do
  ... some stuff
end

But now it appears that calling /myroute results in a 404 error whereas it used to work before.
I tried the 'old' way as below, but that doesn't seem to work in 13.0 either?
get '/myroute/(:optparam)' do
  ... some stuff
end

Managed to effect a workaround solution by checking for both route possibilities, like so:
['myroute', 'myroute/:optparam'].each do |path|
  get path do
    ...stuff
  end
end

It means I cannot use symbols for the routes any longer, which is disappointing because it breaks the consistency of my code, but at least it works!

Have you tried the new syntax? With the '?'.
get "/foo(/:optional)?" do
end

I will give that a shot later tonight - thanks!
Any chance there is a way to make it work with the
get :foo, :with => ...

syntax? Purely from a consistency point of view with my code base (which is over 8000 lines of Ruby)

Yes. It works with with:
get :myroute, :with => '(:optparam)?' do
  params.inspect
end

Closing as resolved.


npm packages compromised

https://www.bleepingcomputer.com/news/security/npm-packages-used-by-crypto-exchanges-compromised/

Resolved by 0f29dd3


source code compile error

my system info: ubuntu, x86_64
when I use the source code to compile, the error message is as follows
fatal error: arrow/api.h: No such file or directory
    9 | #include <arrow/api.h>
      |          ^~~~~~~~~~~~~

Is it that the compilation option is not set correctly

Hi @nevermore3,
We regularly build and test with Ubuntu 22.04 LTS on our CI/CD pipeline. Could you please let us know the version of your Ubuntu and CMake and the compiler you are using, as well as the command you used?

my OS version : Ubuntu 20.04 LTS
CMAKE : 3.16.3
compiler : gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
My operation is as follows
1、download  source code
2、cd  ~/kuzu
3、mkdir build
4、cd  build
5、 cmake ..
6、 make NUM_THREADS=20

Hi @nevermore3. Could you please try to run make clean-all  and then make all NUM_THREADS=20 under kuzu directory? The build script should automatically fetch and build Apache Arrow dependency first before building kuzu.


Restrictions on Non-SDK interfaces targeting Android 29

I am using this plugin in a cordova/ionic app. I have tested the build with veridex-tool after receiving warnings in Google Play Console that the app is using non-SDK apis that are greylisted. I have tested each plugin, installing them one by one to find out which causes this problem. I attach the output:
NOTE: appcompat.sh is still under development. It can report
API uses that do not execute at runtime, and reflection uses
that do not exist. It can also miss on reflection uses.
#1: Reflection greylist Landroid/app/Dialog;->mOnKeyListener use(s):
       Landroidx/core/view/KeyEventDispatcher;->getDialogKeyListenerPre28(Landroid/app/Dialog;)Landroid/content/DialogInterface$OnKeyListener;

#2: Reflection greylist Landroid/graphics/Typeface;->createFromFamiliesWithDefault use(s):
       Landroidx/core/graphics/TypefaceCompatApi24Impl;-><clinit>()V
       Landroidx/core/graphics/TypefaceCompatApi26Impl;->obtainCreateFromFamiliesWithDefaultMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method;
       Landroidx/core/graphics/TypefaceCompatApi28Impl;->obtainCreateFromFamiliesWithDefaultMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method;

#3: Reflection greylist Landroid/media/AudioAttributes;->toLegacyStreamType use(s):
       Landroidx/media/AudioAttributesImplApi21;->getAudioAttributesToLegacyStreamTypeMethod()Ljava/lang/reflect/Method;

#4: Reflection greylist Landroid/media/session/MediaSession;->getCallingPackage use(s):
       Landroid/support/v4/media/session/MediaSessionCompatApi24;->getCallingPackage(Ljava/lang/Object;)Ljava/lang/String;

#5: Reflection greylist Landroid/os/Bundle;->getIBinder use(s):
       Landroidx/core/app/BundleCompat$BundleCompatBaseImpl;->getBinder(Landroid/os/Bundle;Ljava/lang/String;)Landroid/os/IBinder;

#6: Reflection greylist Landroid/os/Bundle;->putIBinder use(s):
       Landroidx/core/app/BundleCompat$BundleCompatBaseImpl;->putBinder(Landroid/os/Bundle;Ljava/lang/String;Landroid/os/IBinder;)V

#7: Reflection greylist Landroid/service/media/MediaBrowserService$Result;->mFlags use(s):
       Landroidx/media/MediaBrowserServiceCompatApi26;-><clinit>()V

#8: Reflection greylist Landroid/view/LayoutInflater;->mFactory2 use(s):
       Landroidx/core/view/LayoutInflaterCompat;->forceSetFactory2(Landroid/view/LayoutInflater;Landroid/view/LayoutInflater$Factory2;)V

#9: Reflection greylist Landroid/view/View;->mAccessibilityDelegate use(s):
       Landroidx/core/view/ViewCompat;->hasAccessibilityDelegate(Landroid/view/View;)Z

#10: Reflection greylist-max-p Landroid/view/animation/Animation;->mListener use(s):
       Landroidx/fragment/app/FragmentManagerImpl;->getAnimationListener(Landroid/view/animation/Animation;)Landroid/view/animation/Animation$AnimationListener;

#11: Reflection greylist-max-o Lcom/android/internal/view/menu/MenuBuilder;->removeItemAt use(s):
       Landroidx/core/widget/TextViewCompat$OreoCallback;->recomputeProcessTextMenuItems(Landroid/view/Menu;)V

#12: Reflection greylist Llibcore/icu/ICU;->addLikelySubtags use(s):
       Landroidx/core/text/ICUCompat;-><clinit>()V

12 hidden API(s) used: 0 linked against, 12 through reflection
	10 in greylist
	0 in blacklist
	1 in greylist-max-o
	1 in greylist-max-p
	0 in greylist-max-q
To run an analysis that can give more reflection accesses,
but could include false positives, pass the --imprecise flag.

I mention that all of these API calls are caused by this plugin (the app may crash or not work at all on Android API Level > 27, while 29 is now required). What can be done to update this plugin to the Android new standards?

Not sure how did you figure out that all those calls are caused by this plugin, but you are wrong, most of them are from AndroidX, which the plugin doesn't support yet, so it's not possible that they are caused by the plugin. And even if the plugin used AndroidX, those come from the google classes, so google should fix those or maybe your dependencies are out of date.


JavaScript tag is shown 2 times in Search page

Description
On the search page, the tag for JavaScript is shown twice. Even when the user selects both tags, "JavaScript" is written two times in the search bar.
Screenshots

Additional information
No response

Can you assign me this issue, please?

There is an old issue, I will close this as it is a duplicate of https://github.com/EddieHubCommunity/LinkFree/issues/4676


“ledger_entry” with request improperly specified a Currency Code field do not return "malformedCurrency"

Expected response: malformedCurrency
Actual response: invalidParams
Sample request:
{   "method": "ledger_entry",   "params": [{     "ripple_state": {       "accounts": [         "rEgAvY1qyEfZxwSaDg5UdLtNQzyvSPEXtV",         "rhyxmFfxujVTfxBjug37kouzms6YzWpAUy"       ],       "currency": "aa"     },     "ledger_index": "validated"   }] }

@ManiMounikaKunasani there is no dedicated error code for malformedCurrency within ErrorCodes.h. Closing this issue as the plaintext error already returns "malformedCurrency'" and needs no further modification

@ManiMounikaKunasani changed the "malformedCurrency" text error to "invalidParams" but don't think this is advisable as we are downgrading from a more specific error message. A custom error code for malformedCurrency does not within rippled's ErrorCodes.h

@officialfrancismendoza I think there's some misunderstanding here. Expected change from this issue is the error in Clio response should be malformedCurrency instead of invalidParams.
Sample rippled response:
{     "result": {         "error": "malformedCurrency",         "ledger_hash": "2490B57E90FC49F9F930A1C0E7C31DF253B61F28444A1A0171A515F33E946D60",         "ledger_index": 23070262,         "request": {             "command": "ledger_entry",             "ledger_index": "validated",             "ripple_state": {                 "accounts": [                     "rEgAvY1qyEfZxwSaDg5UdLtNQzyvSPEXtV",                     "rhyxmFfxujVTfxBjug37kouzms6YzWpAUy"                 ],                 "currency": "aa"             }         },         "status": "error",         "validated": true     } }
Sample Clio response:
{     "result": {         "error": "invalidParams",         "error_code": 31,         "error_message": "malformedCurrency",         "status": "error",         "type": "response",         "request": {             "method": "ledger_entry",             "params": [                 {                     "ripple_state": {                         "accounts": [                             "rEgAvY1qyEfZxwSaDg5UdLtNQzyvSPEXtV",                             "rhyxmFfxujVTfxBjug37kouzms6YzWpAUy"                         ],                         "currency": "aa"                     },                     "ledger_index": "validated"                 }             ]         }     },     "warnings": [         {             "id": 2001,             "message": "This is a clio server. clio only serves validated data. If you want to talk to rippled, include 'ledger_index':'current' in your request"         }     ] }

Clio response is missing ledger_hash,ledger_index, validated
Rippled response:
{     "result": {         "error": "malformedCurrency",         "ledger_hash": "AF756E58D568B93B564E8E1A5D9E43CFAAF8C8106F439E0BD893779CC69989DE",         "ledger_index": 23530782,         "request": {             "command": "ledger_entry",             "ledger_index": "validated",             "ripple_state": {                 "accounts": [                     "rEgAvY1qyEfZxwSaDg5UdLtNQzyvSPEXtV",                     "rhyxmFfxujVTfxBjug37kouzms6YzWpAUy"                 ],                 "currency": "aa"             }         },         "status": "error",         "validated": true     } }
Clio response:
{     "result": {         "error": "malformedCurrency",         "error_code": 5000,         "error_message": "malformedCurrency",         "status": "error",         "type": "response",         "request": {             "method": "ledger_entry",             "params": [                 {                     "ripple_state": {                         "accounts": [                             "rEgAvY1qyEfZxwSaDg5UdLtNQzyvSPEXtV",                             "rhyxmFfxujVTfxBjug37kouzms6YzWpAUy"                         ],                         "currency": "aa"                     },                     "ledger_index": "validated"                 }             ]         }     },     "warnings": [         {             "id": 2001,             "message": "This is a clio server. clio only serves validated data. If you want to talk to rippled, include 'ledger_index':'current' in your request"         }     ] }

@ManiMounikaKunasani the missing fields noted in the buglist sheet are out of scope for the original issue here so let's open a new one for the missing fields if you think we need them.


listing 4.2

User warnings for deprecated argument and compatibility issues. Just warnings, the code still runs.
[.../miniconda3/lib/python3.10/site-packages/geopandas/_compat.py:124): UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.4-CAPI-1.16.2). Conversions between both will be slow.
warnings.warn(
[...miniconda3/lib/python3.10/site-packages/osmnx/graph.py:88): UserWarning: The clean_periphery argument has been deprecated and will be removed in a future release. Future behavior will be as though clean_periphery=True.
G = graph_from_polygon(

The code run without warning for me


Is ImageProcessor (with ImageFactory) and ImageProcessor.Web using same Core ?

hello , youre doing excellent job here
i want to ask something about Processor Core
when i use ImageProcessor.Web ( http://xxx.jpg?width=1000&height=500 ) i get more quality image to using ImageFactory.Resize()
i dont really understand is my parameters wrong... i need some help here..
here is the Web Image

and here is the image that generated by ImageFactory.Resize()

Hi there,
Yes, ImageProcessor.Web uses the ImageFactory class underneath to perform all the image manipulation.
The difference you are seeing is due to a difference in the ImageFactory constructor usage.
In the ImageProcessor library the ImageFactory class when initialized using the default parameters will adjust the colorspace of the image when resizing to correctly handle gamma adjusted images when resizing and performing other manipulation. In certain circumstances rounding errors due to the limitations of 8 bit color components will cause artifacts to appear in images. This tends to affect darker gradient tones.
In ImageProcessor.Web the ImageFactory constructor is initialized with the parameter fixGamma set to false. This speeds up processing and prevents images from introduced artifacts during bulk processing.
So in order to generate identical images use the following constructor.
// Don't preserve EXIF data, Don't fix gamma
using (ImageFactory imageFactory = new ImageFactory(false, false) {
}

Your web querystring parameters are absolutely fine.
I hope that clears things up for you.
Cheers
James

it solved my problem , im very grateful.
if it possible i want to ask another simple question.
when i try to Resize png image (has transparency) , i get an image with removed transparency ,
here is the original image

here is the output

Is this using the ImageFactory?
That should not happen, Are you calling the BackgroundColor method?

yes , my code is here below
``
ImageFactory imgf = new ImageFactory(false,false);
imgf.Load(s.ToArray()); // s is MemoryStream of Image
imgf.BackgroundColor(Color.FromArgb(255, Color.White));
ResizeLayer rl = new ResizeLayer(new Size(1000, 350),ResizeMode.BoxPad);
imgf.Resize(rl);

i need to add trasnparent border to image (even it has transparency)

Well that's why then.
You are deliberately setting a background color using the BackGroundColor method as demonstrated here.
http://imageprocessor.org/imageprocessor/imagefactory/backgroundcolor/
imgf.BackgroundColor(Color.FromArgb(255, Color.White));

Why are you setting the alpha component of the background color to 255? That is exactly the same as simply using Color.White
If you want the png to be transparent you need to not do that.
If an ImageFormat doesn't support transparency (jpeg, 24 bit bmp) then you cannot make the border transparent. You can only set it to an opaque color.
Are you disposing of your ImageFactory properly? It doesn't look like you are.

thanks again :) it's solved.

No worries, happy to help. :smile:


Export normalize method from writer service inside cassandra package

This pull request resolves #157
Summary:

Export normalize method from writer service inside cassandra package to be able to reuse it in rules-engine microservice

Merged, thanks @bblagojevic94


Testable code

Inorder to write useful UnitTests it necessary to write testable methods and classes. Consider this while developing.

@Kaayy-J, you could write test-cases for the methods in UserInput.cpp


Adding configuration for setting the auto-refresh interval

This PR adds support for defining the auto-refresh interval via config.js
It does not add the use of config for auto-refresh on "top10", nor on "watch" as the codepath for auto-refresh there seemed inactive. If I am mistaken, or if this also should be implemented there then please say so, and I'll change my PR to match!

It hadn't occurred to me that auto-refresh isn't implemented for Top10 or Watched. I'll merge this and add fixes for them to the backlog. Thanks for the contribution! 👍


Can't define sasl_mech in /etc/ldap2pg.yml

To enable Kerberos for authenticating LDAP queries, it would be convenient to set sasl_mech: GSSAPI in /etc/ldap2pg.yml where other LDAP parameters can be set, but I get Unknown config entry: ldap:sasl_mech. in the verbose output when attempting to set it there.
Can sasl_mech be added to the known config parameters, or was it left out intentionally?
I am able to work around this by adding SASL_MECH GSSAPI to ~postgres/.ldaprc, or alternatively by setting the LDAP_SASL_MECH environment variable to GSSAPI.

Hi @micahthepenguin , thanks for the report.
I suggest to avoid at most connexion configuration in ldap2pg.yml. It is not read by ldap utils, and requires extra code pretty dumb that need to be synchronized with libldap.
I suggest to ship a ldaprc file along ldap2pg.yml.

Understood.  Thanks.


Security management enhancements:

UF-325: Add help icons with tips to workbench permissions
UF-329: Add automatic disabling of illogical combinations in Security perspective
NOTE: this PR depends on https://github.com/uberfire/uberfire/pull/432
@manstis Can you verify please?

@dgutierr Shouldn't we have tests to check permissions are correctly set-up?

UF already provides coverage for the permission inter-dependencies.
Anyway, I also think is a good idea to have some coverage for the tree providers. I'll prepare some. Thanks for the remainder...

@dgutierr Yes, I assume Uberfire has tests to check the generic framework works correctly; I was meaning, as you say, some specific tests for the different tree providers to verify the default permissions are correctly configured.

@manstis Tests added

Great, thanks @dgutierr
+1 to merge (when UF PR is ready).


Checkfallbacks sometimes misses certificate issues

For example, a recently-launched proxy passed checkfallbacks, but connections fail with:
ERROR balancer: balancer.go:430 Unexpected error dialing via fp-mskr1c021hk-20210329-004-0 (<IP_ADDRESS>:443) to connect://update.getlantern.org:443: handshake failed: proxied handshake failed: x509: certificate is valid for *.hosting.reg.ru, hosting.reg.ru, not en.federalsp.ru on pass 1...continuing [beam=8 core_dial_time=[169.605314] dc=mskr1c021hk dial_type=connect error=%v dialing via %v to %s://%s: %v on pass %v%v error_location=github.com/getlantern/flashlight/balancer.(*balancedDial).onFailure (balancer.go:430) error_text=Unexpected error dialing via fp-mskr1c021hk-20210329-004-0 (<IP_ADDRESS>:443) to connect://update.getlantern.org:443: handshake failed: proxied handshake failed: x509: certificate is valid for *.hosting.reg.ru, hosting.reg.ru, not en.federalsp.ru on pass 1...continuing error_type=errors.Error force_proxied=true force_proxied_reason=routingrule local_proxy_type=http op=balancer_dial_details origin=update.getlantern.org:443 origin_host=update.getlantern.org origin_port=443 proxy_host=<IP_ADDRESS> proxy_multiplexed=false proxy_name=fp-mskr1c021hk-20210329-004 proxy_network=tcp proxy_port=443 proxy_protocol=tlsmasq proxy_type=chained remotely_proxied=true root_op=proxy user_agent=Go-http-client/1.1]
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/balancer.(*balancedDial).onFailure (balancer.go:430)
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/balancer.(*balancedDial).dialWithDialer (balancer.go:372)
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/balancer.(*balancedDial).dial (balancer.go:327)
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/balancer.(*Balancer).DialContext (balancer.go:277)
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/client.(*Client).doDial.func2 (client.go:591)
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/client.(*Client).doDial (client.go:620)
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/client.(*Client).dial (client.go:562)
ERROR balancer: balancer.go:430   at github.com/getlantern/proxy.(*proxy).proceedWithConnect (proxy_connect.go:167)
ERROR balancer: balancer.go:430   at github.com/getlantern/proxy.(*proxy).processRequests (proxy_http.go:235)
ERROR balancer: balancer.go:430   at github.com/getlantern/proxy.(*proxy).handle (proxy_http.go:150)
ERROR balancer: balancer.go:430   at github.com/getlantern/proxy.(*proxy).Handle (proxy_http.go:40)
ERROR balancer: balancer.go:430   at github.com/getlantern/flashlight/client.(*Client).handle (handler.go:34)
ERROR balancer: balancer.go:430   at runtime.goexit (asm_amd64.s:1371)
ERROR balancer: balancer.go:430 Caused by: handshake failed: proxied handshake failed: x509: certificate is valid for *.hosting.reg.ru, hosting.reg.ru, not en.federalsp.ru

I think this usually comes down to non-determinism in how the origin site serves certificates (we see this occasionally).  The configured SNI is based on cert A and when we run checkfallbacks, we get cert A and call it a successful launch.  However, when clients connect, the origin site may serve cert B causing the connection to fail.

Related to https://github.com/getlantern/lantern-internal/issues/4723