python311Packages.phonopy: 2.21.2 -> 2.22.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python311Packages.phonopy is: Modulefor phonon calculations at harmonic and quasi-harmonic levels
meta.homepage for python311Packages.phonopy is: https://phonopy.github.io/phonopy/
meta.changelog for python311Packages.phonopy is: https://github.com/phonopy/phonopy/blob/v2.22.0/doc/changelog.md
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.22.0 with grep in /nix/store/758r90kysa8lmrzqbw45vfpxrqwin0vh-python3.11-phonopy-2.22.0
found 2.22.0 in filename of file in /nix/store/758r90kysa8lmrzqbw45vfpxrqwin0vh-python3.11-phonopy-2.22.0

Rebuild report (if merged into master) (click to expand)

5 total rebuild path(s)

5 package rebuild(s)

First fifty rebuilds by attrpath
python311Packages.atomman
python311Packages.phonopy
python311Packages.sumo
python312Packages.atomman
python312Packages.phonopy

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/758r90kysa8lmrzqbw45vfpxrqwin0vh-python3.11-phonopy-2.22.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python311Packages.phonopy https://github.com/r-ryantm/nixpkgs/archive/8a3d665ff6d8896029879045fecf37c33c527cb1.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/8a3d665ff6d8896029879045fecf37c33c527cb1#python311Packages.phonopy

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/758r90kysa8lmrzqbw45vfpxrqwin0vh-python3.11-phonopy-2.22.0
ls -la /nix/store/758r90kysa8lmrzqbw45vfpxrqwin0vh-python3.11-phonopy-2.22.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review took longer than 45m and timed out

Maintainer pings
cc @PsyanticY for testing.

Result of nixpkgs-review pr 298210 run on x86_64-linux 1

2 packages failed to build:

python312Packages.atomman
python312Packages.atomman.dist

8 packages built:

python311Packages.atomman
python311Packages.atomman.dist
python311Packages.phonopy
python311Packages.phonopy.dist
python311Packages.sumo
python311Packages.sumo.dist
python312Packages.phonopy
python312Packages.phonopy.dist


Markdown Preview needs styling

As it stands now, the markdown preview is quite ugly. Styling it would require adding a new stylesheet to the project, which I'm currently considering. One issue I'm concerned about at the moment is scope creep, and while adding a stylesheet would add a lot of potential to the project, it would also make it fairly easy to take the project beyond what its intended purpose.

Not sure when, but I apparently fixed this sometime in the past.


[BUG REPORT]: Fix PRISM datetime hour in db

PRISM product files (before May 9th or 10th) were stored at 00:00 UTC time for each file.
This results in DSS records that look like:

Refactored processor (by @jeffsuperglide) was fixed to set the hour to 12:00 UTC
Documentation: https://prism.oregonstate.edu/calendar/
Existing PRISM product files with a time of 00:00 need to be set to 12:00
@FHanbali Can you confirm this is correct?

yes, PRISM documentation states:
"A PRISM day is defined as 1200 UTC-1200 UTC (e.g., 7 AM-7AM EST), which is the same as the AHPS day definition."

thanks @FHanbali
Here is the sql I will use to fix it next week:
ALTER TABLE cumulus.productfile DISABLE TRIGGER notify_snodas_interpolate_geoprocess;

update cumulus.productfile set datetime = (datetime + interval '12 hour')
where product_id in
('64756f41-75e2-40ce-b91a-fda5aeb441fc',
'62e08d34-ff6b-45c9-8bb9-80df922d0779',
'6357a677-5e77-4c37-8aeb-3300707ca885')
and EXTRACT(HOUR from datetime) = 0;

ALTER TABLE cumulus.productfile ENABLE TRIGGER notify_snodas_interpolate_geoprocess;


RabbitMQ plugin

Hi. Please add RabbitMQ / AMQP support.

I really need that PR. Please merge :-)

As of deployment process was improved, there is a room for newer image build pipeline if user helps continuously maintain  the image.  if you still have interest to do it, please create PR.


libfranka without Poco Dependency?

I'm working for ESA Human Robot Interaction lab, and we just bought your new Franka arm (very excited about it).
We use buildroot to build our images for our systems and we use custom software stack with xenomai 3 with dual kernel.
Is it possible to build the libfranka from source without the ROS Poco dependency? I would imagine this would only be used for the ROS integration.

Sorry just realized that it's not a ROS library but separate library, which Buildroot already supports.


[#127983495]upload_counterpart_agreement notifications

Story https://www.pivotaltracker.com/story/show/127983495
One thing I'm considering is whether it's the right thing to swallow EmailError and continue to the next supplier - if we're not able to send an email we maybe don't want to blaze ahead and upload a bunch of files if there's a likelihood that all the emails are going to fail and we've just lost the chance to send the users emails...?

(I also suspect I should add some tests that verify this behaviour)
(Though the closer I look at it the more it looks like the exception swallowing should happen in the script and not upload_counterpart_agreements to make it more useful as a utility function :man_shrugging:)

Had a new thought about this - I think we should count all errors (IO/API/Notify/whatever) and return the error count from the script.
That way Jenkins can make the job as failed if there were any errors, we'll see it red on the board and can go in to check what went wrong.

Iiiiiiiiinteresting...

Think this is good to go now :+1:


Part::datalen type, conversion warnings and validation.

For someone not familiar with curl APIs, these warnings look quite scary.
session.cpp(189): warning C4312: 'reinterpret_cast': conversion from 'unsigned long' to 'const char *' of greater size
session.cpp(221): warning C4312: 'reinterpret_cast': conversion from 'const unsigned long' to 'const char *' of greater size

From what I could gather, this is benign and intentional. Is this assumption correct?
Given the special case in the documentation, can datalen be 0 and the data be nullptr?
https://curl.haxx.se/libcurl/c/curl_formadd.html#CURLFORMCONTENTLEN

Yes, this can be problematic and curl_formadd is also deprecated (see here for reference).
https://github.com/whoshuu/cpr/blob/8bf5ac64140df19d907144e12c96e02f68d1a56a/cpr/session.cpp#L211-L242

This one has been fixed. I do not know when, but it does not occur any more.
Closing it for now.
Feel free to reopen in case this is still a problem.


JSON importer

Add simple skfem.importers.json for loading json files that are dumps from Mesh.to_dict.

Added Mesh.from_dict


SSL Handshake Error on communication with Sentry

I have been having issues integrating Sentry into a Django application. When I run the application locally with Sentry configured in settings.py (imported and initialised with a modern-style DSN) everything works perfectly with all errors showing up on Sentry as expected. However, when running the application on a server it is rare for errors encountered to actually be reported to Sentry, but it does happen occasionally. Looking at the logs for the docker container the application is running in, I can see the following SSL error occasionally appearing when an error is expected to appear on Sentry (although this doesn't happen very often or account for all the times the error doesn't appear on Sentry):
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError("bad handshake: SysCallError(-1, 'Unexpected EOF')",),)': /api/<hidden_sentry_id>/store/
This is how I have carried out the Sentry initialisation:
sentry_sdk.init(
<EMAIL_ADDRESS>    environment="dev",
    integrations=[DjangoIntegration()],
    traces_sample_rate=1.0,

    # If you wish to associate users to errors (assuming you are using
    # django.contrib.auth) you may enable sending PII data.
    send_default_pii=True
)

With different settings.py files used depending on the environment. Only the value for "environment" has been changed in the configuration on the server.
Does anybody have any advice on how to resolve this issue?
EDIT:
Another interesting thing to note is that causing errors sometimes pushes through old errors which are back-dated and appeared to be lost, even though the new error doesn't show up itself (for instance, I just caused a series of errors and sentry suddenly started showing a few errors timestamped from 42 minutes ago). It isn't 1:1 though, so causing 10 errors causes fewer than 10 old errors to appear - in fact, I just did 10 and 1 old error appeared.

We are experiencing the same issue with AWS Lambdas (integrations=[AwsLambdaIntegration()]).
We are using sentry-sdk==0.19.2

@jp438-2 I think you're actually forgetting to use the AwsLambdaIntegration here.
@Katafalkas are you getting exactly the same error message? What happens if you use sentry_sdk.flush() after capturing the error to make sure the event got sent out?
sentry_sdk.capture_exception(e)
sentry_sdk.flush()

This is our wrapper:
def sentry_logging(func):
    @functools.wraps(func)
    def wrapper_decorator(*args, **kwargs):
        sentry_sdk.init(
            dsn=os.environ['SENTRY_DSN'],
            integrations=[AwsLambdaIntegration()]
        )
        try:
            value = func(*args, **kwargs)
        except Exception as e:
            logger.error(e, exc_info=True)
            raise
        return value
    return wrapper_decorator

I will try adding sentry_sdk.flush() after logger.error(e, exc_info=True).

Yes that sounds good, although to be clear this should happen automatically.

@untitaker This happens only if the same instance of lambda is being re-used a lot.
Somehow it drains all the memory and times-out.
Just made the change - looking good so far. will run this for another hour.

Usually aws's suspension is causing our background thread to not send data out fast enough. The flush() basically reserves more time (which in serverless translates to money spent) to send out this data. There's no remedy other than that.
The AwsLambdaIntegration should do this out of the box though: call flush() when the handler returns.

After adding flush SSLError errors disappeared. The avg. duration of lambda did increase.

actually @Katafalkas, instead of flushing can you try initializing the SDK during import time? I think that's the problem.

@untitaker  I also have this problem and am also initialising inside of the lambda handler currently with Python 3.7 and the following:
boto3==1.17.8
botocore==1.20.8
colorama==0.4.4
coverage==5.0.3
numpy==1.20.1
mypy==0.761
mypy-extensions==0.4.3
Pillow==8.1.2
pycodestyle==2.7.0
pylint==2.6.2
pylint-quotes==0.2.1
pylint-runner==0.6.0
pytest==4.4.0
pytest-timeout==1.4.1
pytest-xdist==1.27.0
pytz==2021.1
requests==2.25.1
scipy==1.6.0
sentry-sdk==1.1.0
typeguard==2.10.0
aws-lambda-powertools==1.15.1
typeguard==2.10.0

Could I clarify why initialising inside the lambda is incorrect?
If so, it would be great if this was signposted quite clearly in the docs (sorry if it already is). I know the example shows declaration in global scope, but was not aware it was forbidden to declare it in local scope - we have been doing this throughout many repos.
Also in what situations is flush() usage is expected to be required? I suppose we could add this to all our lambda handler top-level exception handlers if needed - but its a lot of boilerplate changes to do.

flush() is a workaround, everything is supposed to work out of the box.
Initializing inside of the lambda is often too late and does not catch all errors that happen, but that it would cause SSLError is only a hunch as well.

I see thanks; well I will try initialising in global scope and get back to you.

Yeah to be clear I am suggesting some workarounds here, if they work then we have a better idea of where the problem lies. A backwards approach to debugging but I don't see a better way to do remote diagnostics :(

@untitaker  indeed I can confirm moving the initialisation of sentry from the start of the handler into global scope seems to resolve this issue. I will proceed with making this change across our repo's when I get the time. This issue is specific to enabling the AWSLambdaIntegration integration.

So the issue here was that the sentry_sdk.init() was called to late (not in the global scope, but in the handler of the Lambda function). If Sentry is initialized as in the documentation shown (and linked in the previous comment above) than everything works as expected.
I am closing this issue.


Analysis of Corpora without Categories?

Hi, the library looks awesome and very useful measurements, thank ya'll very much for your work and sharing this with everyone! :) I had a question and I'm not sure if I saw the answer in the tutorials, and it's whether or not it's possible to use scattertext with a single corpus with categories? I know I could do a sentiment analysis or another type of analysis of the words but, if I'm wanting to plot just a simple word or phrase frequencies chart with scattertext, is that possible? And sorry if I'm asking a question that's already been asked or answered, I haven't had a chance to read through the issue log. Appreciate ya'll's time.

Hi Scott,
Thanks for the note.
Due to some expedient but poor design choices I made at the beginning of the project, you need at two categories of text to make a visualization.  I'm working on a way to gracefully undo these choices, and should have a means of analyzing single-category corpora soon.
Jason

Is there an update on this issue? Rather than two, I'd like to work on 4 categories. Is it possible?

No
On Wed, Oct 19, 2022 at 5:22 PM fatihbozdag @.***>
wrote:

Is there an update on this issue? Rather than two, I'd like to work on 4
categories. Is it possible?
—
Reply to this email directly, view it on GitHub
https://github.com/JasonKessler/scattertext/issues/70#issuecomment-1284731385,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACMMXCJILEO7V7CMFNLXHDWECGDNANCNFSM4SKF7T7Q
.
You are receiving this because you commented.Message ID:
@.***>


Can't download ptt

I try download voice notes, but trow error:
$ python3 src/downloader.py
Traceback (most recent call last):
File "src/downloader.py", line 68, in
save_media(media_msg,'./',force_download=True)
File "src/downloader.py", line 63, in save_media
ioobj = download_media(media_msg, force_download)
File "src/downloader.py", line 57, in download_media
af = decryptor.finalize()
File ".../lib/python3.6/site-packages/cryptography/hazmat/primitives/ciphers/base.py", line 159, in finalize
data = self._ctx.finalize()
File ".../lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/ciphers.py", line 173, in finalize
"The length of the provided data is not a multiple of "
ValueError: The length of the provided data is not a multiple of the block length.
My gist for sample:
https://gist.github.com/eduardomazolini/69eee2f02d7a89bb17cb66a752e648d7

My mistake, I'm sorry.
I was coding instead of decoding.
Gist is updated


Add method 'addStructInfo' in DictMethodCompModelHelper

This PR addresses RO-3238 to populate missing _struct.title for computed structure models.

Looks good, thanks! But had some comments/questions. Also, I'm guessing you'll add this method to the dictionary files too?

Yes, that's already updated.

The other thing that might be good to add is a note in the code somewhere to remind us to remove this method once the incoming structures all have _struct already (i.e., make it clear that this method is supposed to just be a temporary workaround).

The method will do nothing if struct is already populated (see lines 359 and 360). It will make a difference only for computed structure models that do not have the struct table. Considering that these models are from external resources, struct is not mandatory, and our pipeline breaks if struct is missing, I think it is reasonable to leave the method as is to handle any stray cases.

OK, thanks for the clarification. I agree that it's good to keep the method in here to handle any future stray cases, but I still feel like it's a good idea to make a note on why we created the method in the first place (i.e., to handle incomplete AF models). That way, if/when we eventually run into a case where the title is being populated in an undesirable way, we know why the method is the way it is. That's just my strong preference, but you're welcome to disagree.

Thanks. There is already a comment that the method adds missing struct table.  I'd rather leave it as is.

OK, very well :)


Functions inside compositions allow for implicit any arguments

With composable outside a composition it gives an implicit-any error. Inside a composition, it does not. It also happens with regular functions not wrapped in composable:

This was probably introduced with 4.2... I think I'll have to add another layer of complexity to the combinators, at least I know what to do now 😅

Fixed on v4.4 ;)


Splitting zarf packages into multiple files

Is your feature request related to a problem? Please describe.
Given that the military operates almost exclusively off of CDs and DVDs for data transfer between machines (especially to an air gapped machine) it would be a valuable feature of zarf to be able to split packages into multiple files to be able to fit on aforementioned storage mediums.
Describe the solution you'd like
Either/both a flag to zarf package create to specify splitting size or/and a separate utility command zarf tools split & zarf tools combine to manage splitting and combining packages.
Additional context
There is already a pattern for this relating to injector configmap creation

+1 this would be great. As a follow on it might be nice to be able to run the deploy without having to do the combine first, if zarf is able to internally figure out that it is a split package and runs the combine internally

So....something like

Or maybe

@jeff-mccoy Exactly like that. I'm wondering if a flag is actually the wrong way to go for this though, I'd almost like to see a new field in zarf.yaml metadata more, something like maxSize: 500MB or storageMedium: DVD

Either or, just like architecture.

^ the flag wasn't set in the screenshot above, though you can now do a flag or viper config/env variable.  Thinking more about this:

there may be times that the package author will for sure know that this package is giant and should probably be chunked
but also whoever is running zarf package create (which may or may not be the package author) may have a specific env that needs a different chunk size--think to one env it's a data diode (no chunk size), another DVD and another CD
lastly, now that we have viper, a person running zarf package create could actually set a global env variable or config file to always chunk any package to a certain size--or be even fancier and combine w/ autoenv to set chunk size per set of folders/packages if they are building a lot of zarf packages.

I would argue for a command flag over a metadata change.  (this is just my experience) but a lot of the time the package author won't know how the package deployer (or really the middle diode persona) is going to want the package chunked beforehand (and it can change over time).  I have seen it where IA has run out of blu-ray discs and so now we have to chunk for DVDs, or maybe our write blocker hard drive isn't available for some reason (usually random policy changes) so now we need to chunk to disc.

Agree command flag will likely be most common use. But we also have the compression and architecture fields in metadata today so I was grunt to stay consistent. I guess we could make compression a command flag instead too and not do metadata for those.

We could do both, but the "uncompressed" metadata attribute does seem more useful as a command flag too.  What was the original issue for that? (assuming virus scanners not knowing what a zst file is?)

When the data sets were too large for data injection and already compressed internally it was causing resource issues extracting on low-powered systems.

Yeah that seems like something more worthy of a command flag IMO.  You could run into that if you took a Zarf package and tried deploying it on something low end (although I suppose on gigantic packages that could make sense to have in the definition too).

There could also be a flag/viper config on package create side to "auto split if larger than max file size"

We could even set some default (4 gigs for example) so that anything above that threshold splits.

As I've thought about this more, I really like the idea of setting a "max package size" as a default with the ability for a user to override vs including in the zarf.yaml or manual chunk size delimiter as a flag.  It still meets the intent of allowing a user to control what makes sense for their env on zarf package create while also not making things inconsistent with other flags such as architecture because this is more a system-wide config like the zarf cache vs package-specific config like the architecture. Also realize I'd have to throw away a chunk of code I wrote, but I'm totally fine with that.

I think that makes sense as long as max package size was reasonably large.  I think 10s-100s of GiBs is fine for a package but probably around maxing out a BD-XL disc (100GB) you should split it just to avoid potential decompression issues with weak CPUs on the other side.


Tweak our reaction to the cluster upgrade process.

Previously, the operator started to move the pods off the nodes to be
decomissioned by watching the eol_node_label value. Every new postgres
pod has been created with the anti-affinity to that label, making sure
that the pods being moved won't land on another to be decomissioned
node.
The changes introduce another label that indicates the ready node.  The
new pod affinity will ensure that the pod is only scheduled to the node
marked as ready, discarding the previous anti-affinity.  That way the
nodes can transition from the pending-decomission to the other statuses
(drained, terminating) without having pods suddently scaled to them.
In addition, rename the label that triggers the start of the upgrade
process to node_eol_label (for consistency with node_readiness_label)
and set its default vvalue to lifecycle-status:pending-decomission.

👍

Changes Unknown when pulling f9e14d25170f26cf12367e29a2496c3767f5f839 on run_on_hosts_with_readiness_label into ** on master**.

:+1:


🐞 :  Remove duplicate text box's in feedback section

I want to remove duplicate text box's in feedback section. Please assign me

@iamrahulmahato


Remove github actions configuration

Now that prow is configured to run our tests, we don't need this.

/lgtm /approve

/lgtm
/approve


add UI to split macro issues

requirements
be able to split a macro issue in 2: open issues and closed issues
specs
misc
refer to documentation in nemobot repo here https://github.com/buildo/nemobot

@lucacioria is this still relephant?

not really, the idea is that issues are much more short lived now so it doesn't really matter, you can always close and reopen at a later date from trello


Persistent storage

fixes FlowFuse/flowfuse#4003
Description

Adds support for mounting a PVC on /data/storage to allow for using the standard filesystem nodes.
Also refactors all K8s templates into their own file to make things a little cleaner.
Related Issue(s)

FlowFuse/flowfuse#4003
Checklist

[x] I have read the contribution guidelines
[ ] Suitable unit/system level tests have been added and they pass
[ ] Documentation has been updated

[ ] Upgrade instructions
[ ] Configuration details
[ ] Concepts

[ ] Changes flowforge.yml?

[ ] Issue/PR raised on FlowFuse/helm to update ConfigMap Template
[ ] Issue/PR raised on FlowFuse/CloudProject to update values for Staging/Production

Labels

[ ] Includes a DB migration? -> add the area:migration label

@knolleary I've removed the console.logs as they were mainly sanity checks as I was building it and we don't have the app object in scope to log them.


Integration of the changing of the REST-API during the monaco-integration

Description

This PR contains the changes I've done in the last weeks to integrate openVALIDATION inside the monaco-editor.
The changes can be found almost exclusively in the REST module. Only three changes were made in the other modules.

I added the attribute validDataType inside the ASTComparisonOperator which specifies the valid types for the operator.
In PTConditionConstrainedTransformer.java I removed exceptions that tried to validate a constrained condition inside the parsing process. The same things were checked in the validation layer, so the error messages could be removed.
I added the possibility to specify a position inside the ASTValidationException. This enables the opportunity to specify the global position of an error inside an operand as the position of the parent-class. This is required for the linting-process.

Also the main interface of the REST-API wasn't changed. I only added three new interfaces, that are used inside the editor.
Motivation and Context

Integration of openVALIDATION in the monaco-editor with the REST-API.
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause compatibility issues)
[ ] DevOps change (fix or alteration in a build pipeline or config file)

Checklist:

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.
[ ] I have added the upcoming release notes accordingly.

I added a short documentation of the REST-API here.
In addition, there will be a more technical documentation after the rebuild of the REST-API at api.openvalidation.io/swagger-ui.html

please see #63 instead.


Init source

Make CLI

detect
spoofing
API

Make docstring & README.md

Minimize service.py
Optimize task worker
Fix bug: face_detect does not work well with large images.

Make DockerFile, docker-compose
FastAPI read_image injector
Remove constant.py

Everything look good. I would like to say a big thank to you and the team


li do not close

All
 tags do not have a
 closure tag.

Thanks for the bug: There is some funkiness about closing nested list items in HTML. For plain lists, we're not using the closing tag, but they're not required in HTML5. If you notice a problem with rendering the generated HTML, please share a doc (view-only permission) that illustrates the problem.

I didn't even know about html-tidy.org 😓
Glad I started following this repo just a few hrs ago.. thanks @evbacher!

Yeah, I suppose HTML Tidy would help clean up some lists that are not closed as well.

I'm trying to use this to convert into a docusaurus v2 documentation website. Open
s in the header from you folks was the first error I ran into, so I figure that at least is relevant in here. Also, I selected markdown, so I was surprised to see the result was mostly html. Most of the content is in tables, though, so that probably caused problems. Regardless, I got a lot of errors, so maybe this will be useful to you folks.
The doc:
https://docs.google.com/document/d/1eDzu9IsSK7uhHHCpniPwVg-hq1EgusznE_aueZUtTsg/edit?usp=sharing
The bugs that keep the codebase from building:

The See top comment block for details on ERRORs and WARNINGs. list items aren't closed

 instead of

<MDXLayout> isn't closed
The 'Below the outline' paragraph
 isn't closed.
'Docassemble is our app development platform' came out >Docassemble is our app development platform <- that's from the very beginning of the line.

Maybe tables are still a future goal for this app or maybe I've done something else strange. I'm impressed with how well this tool handled what was there. There are a bunch of other issues, but I can't untangle them, so I'll take this generated code and re-work it by hand. It means I won't be able to report back on more issues. Thanks fo a head start on the content.

I'm trying to use this to convert into a docusaurus v2 documentation website. Open
s in the header from you folks was the first error I ran into, so I figure that at least is relevant in here. Also, I selected markdown, so I was surprised to see the result was mostly html. Most of the content is in tables, though, so that probably caused problems. Regardless, I got a lot of errors, so maybe this will be useful to you folks.
The doc:
https://docs.google.com/document/d/1eDzu9IsSK7uhHHCpniPwVg-hq1EgusznE_aueZUtTsg/edit?usp=sharing
The bugs that keep the codebase from building:

The See top comment block for details on ERRORs and WARNINGs. list items aren't closed

 instead of

<MDXLayout> isn't closed
The 'Below the outline' paragraph
 isn't closed.
'Docassemble is our app development platform' came out >Docassemble is our app development platform <- that's from the very beginning of the line.

Maybe tables are still a future goal for this app or maybe I've done something else strange. I'm impressed with how well this tool handled what was there. There are a bunch of other issues, but I can't untangle them, so I'll take this generated code and re-work it by hand. It means I won't be able to report back on more issues. Thanks fo a head start on the content.

Thanks for using this add-on -- I'm sorry it doesn't do everything perfectly (the lament of all converter creators, I suspect :)
Notes on your observations:
All tables get converted to HTML. Markdown tables won't handle most complex table content.
For your other questions:

Unclosed lists are the original subject of this bug. While HTML5 does not require lists to be closed, I know that many linters prefer it. I may be able to spend some time on this, but no promises!

 is the actual tag according to Mozilla: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr. I'm loathe to change it, even though
 is also accepted.
Is the unclosed paragraph causing issues? Again, I don't believe HTML5 requires the closing of paragraphs.
I'm not sure what you mean here: is there an extra space at the end?

Thanks for using this add-on -- I'm sorry it doesn't do everything perfectly (the lament of all converter creators, I suspect :)
Notes on your observations:
All tables get converted to HTML. Markdown tables won't handle most complex table content.
For your other questions:

Unclosed lists are the original subject of this bug. While HTML5 does not require lists to be closed, I know that many linters prefer it. I may be able to spend some time on this, but no promises!

 is the actual tag according to Mozilla: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr. I'm loathe to change it, even though
 is also accepted.
Is the unclosed paragraph causing issues? Again, I don't believe HTML5 requires the closing of paragraphs.
I'm not sure what you mean here: is there an extra space at the end?

Thanks for taking a look and no worries. There's not enough time in all the world for perfect.

All I know is that's the error I got. Not saying you have to do anything about it, just letting you know in case it turned out that you do want to do something. No worries.
There is a closing angle bracket at the beginning of the line that wasn't in the text from what I recall.

Thanks for taking a look and no worries. There's not enough time in all the world for perfect.

All I know is that's the error I got. Not saying you have to do anything about it, just letting you know in case it turned out that you do want to do something. No worries.
There is a closing angle bracket at the beginning of the line that wasn't in the text from what I recall.

I believe this is fixed with recent changes. Please let us know if you see evidence of this bug still happening.


Cannot debug code in VS Code, but can in other IDEs

From @manjchana on November 15, 2018 10:50
Issue Type: Bug
Hi,
I have created a test script simply of one command - "import getpass". I cannot run and debug this script in VS Code, it fails when trying to import certain any module.
I have disabled extensions, reinstalled VS Code, reinstalled extensions, tried the portable version of VS Code, but still no luck. The code will not run in VS code, but will run in other applications such as Python's IDLE, Notepad++ and PythonWin.
The error encountered is listed below:
Traceback (most recent call last):
  File "c:\Users\mchana\.vscode\extensions\ms-python.python-2018.10.1\pythonFiles\experimental\ptvsd_launcher.py", line 38, in <module>
    main(sys.argv)
  File "c:\Users\mchana\.vscode\extensions\ms-python.python-2018.10.1\pythonFiles\experimental\ptvsd\ptvsd\__main__.py", line 265, in main
    wait=args.wait)
  File "c:\Users\mchana\.vscode\extensions\ms-python.python-2018.10.1\pythonFiles\experimental\ptvsd\ptvsd\__main__.py", line 258, in handle_args
    debug_main(addr, name, kind, *extra, **kwargs)
  File "c:\Users\mchana\.vscode\extensions\ms-python.python-2018.10.1\pythonFiles\experimental\ptvsd\ptvsd\_local.py", line 45, in debug_main
    run_file(address, name, *extra, **kwargs)
  File "c:\Users\mchana\.vscode\extensions\ms-python.python-2018.10.1\pythonFiles\experimental\ptvsd\ptvsd\_local.py", line 79, in run_file
    run(argv, addr, **kwargs)
  File "c:\Users\mchana\.vscode\extensions\ms-python.python-2018.10.1\pythonFiles\experimental\ptvsd\ptvsd\_local.py", line 140, in _run
    _pydevd.main()
  File "c:\Users\mchana\.vscode\extensions\ms-python.python-2018.10.1\pythonFiles\experimental\ptvsd\ptvsd\_vendored\pydevd\pydevd.py", line 1936, in main
    if setup['cmd-line']:
TypeError: 'NoneType' object is not callable

VS Code version: Code 1.29.0 (5f24c93878bd4bc645a4a17c620e2487b11005f9, 2018-11-12T07:47:15.448Z)
OS version: Windows_NT x64 6.1.7601

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz (8 x 2294)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: enabledvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Memory (System)
15.91GB (10.14GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (1)

Extension
Author (truncated)
Version

python
ms-
2018.10.1

Copied from original issue: Microsoft/vscode#63207

Do you have an old version of ptvsd or pydevd that you manually installed?

No, I'm not actually sure how to update these tools manually anyway. I know that VS Code underwent a couple of updates since I last used it (and it worked)

@manjchana I can't reproduce; running a file with nothing more than import getpass works fine for me.
Can you include your launch.json details for what you're using to debug the file?

I think this is because the main function in the pydevd.py file is too long. When I change the last part of the main function to this way, the error disappears.

Because we have not heard back with the information we requested, we are closing this issue for now. If you are able to provide the info later on then we will be happy to re-open this issue to pick up where we left off.
@ryosga as you didn't provide a link to the code you changed I don't know exactly what you did (we vendor a copy of pydevd in ptvsd and those line number don't make sense). Feel free to open an issue at Microsoft/ptvsd .


Add microeducate

mirrors most of GitHub/SO content, automatically and without useful additional work on the content,

https://microeducate.tech/circular-dependency-injecting-objects-that-are-directly-depended-on-each-other/

https://stackoverflow.com/questions/24076299/circular-dependency-injecting-objects-that-are-directly-depended-on-each-other

https://microeducate.tech/completablefuture-usability-and-unit-test/

https://stackoverflow.com/questions/41858894/completablefuture-usability-and-unit-test

Thanks!


Is it possible to set number of decimal places for a numeric cell?

I have a bunch of cells that contain different decimal numbers (all to two decimal places), but all of the cells that have decimals ending in a 0 (i.e. 1.80, 2.00) will not display the 0s (1.8 and 2 respectively). Is there a property in the library that can format the cell's number of decimal places? (In Excel, this can be accomplished by going to Format Cell -> Number -> edit 'Decimal places')

Resolved using the numFmt property in the 'Number Formats' section of the readme. Set numFmt = '0.00' to indicate two decimal places.

Input Number must be integer. so you can set numFmt = '0.00"%"'


Refactor the Login process to take advantage of new capabilities in Azure AD B2C

Complete the signup and terms of service as part of a better flow. It's hacked together now, but could be so much better.

This can use some serious research into what is possible. What integration points are possible in B2C? Can we move the Accept Terms of Service and Privacy Policy into the flow more easily? Can we redirect to the User Profile page in a better way? Need someone familiar with B2C to advise and to work with the design team to make this shine.

In progress


Duplicated sphinx extension

:beetle: About the issue
In the docs/source/conf.py there exists a duplicated extension: sphinx.ext.mathjax.
:bulb: Solution
Simply remove one of the two lines; we are importing twice the extension... This can be an easy issue for new GSOC aspirants to know how to proceed and the issue/pull-request workflow :rocket:

I am working on this


Assertion Error: User ID is not owner of the stored credential.  Login Error

PHP & Platform
8.2
Database
No response
Laravel version
10 [Latest]
Have you done this?

[X] I have checked my logs and I'm sure is a bug in this package.
[X] I can reproduce this bug in isolation (vanilla Laravel install)
[ ] I can suggest a workaround as a Pull Request

Expectation
I want to login.
Description
When I attempted to log in using my Android device with a QR code, an error message appeared is Laravel Log files:
"Assertion Error: User ID is not the owner of the stored credential."
The userHandle is null. I tried the codes in the PRs and the Android null repository.
Reproduction
...

Stack trace & logs
No response

Is there any workaround or fix available? @DarkGhostHunter

I'm currently working on something else to answer.

It's fixed in #52


optimistic-ui: fix incorrect cloning

A mistake in cloning led to incorrect mutations.
Could have prevented with an immutable library, but I don’t want to take on an immutable library as a dependency in oncilla to avoid bloat.
Testing could have helped, but I couldn’t have tests at the initial design stage, and now it’s on the backlog.

Unlike for our internal projects, I am hesitant to use issues for project management on open-source projects. While there’s some benefit of seeing a backlog in public, most guest visitors are using the issue tracker for information on a particular defect they are experiencing, and a backlog drowns us legitimate issues.

I happen to hold the opposite perspective: It's more important to post issues like tech debt and feature tickets in the tracker of a public project in order to communicate to others where the project is at and what still needs to be done. In fact, others may even be more likely to contribute a PR when they know about the work on the todo list. I understand your concern about "legitimate issues" (bug reports, I assume) getting lost, but I have a feeling if they're properly tagged (ultimately by you the maintainer, or someone you designate), then I don't think it will be an issue since they're easily filterable.
We can take this offline if you'd prefer. I have an idea for a broader direction this convo could go that I think would be more beneficial.


improvements to cnn face detection python interface

Small improvements to cnn face detection python interface
changes:

can use the detector in two modes:

single image mode - returns a mmod_rectangles object
list of images - returns a batch_mmod_rectangles object

this mode can be used for speed when CUDA is activated
if CUDA is deactivated then there is no real speed advantage when comparing the two

mmod_rect object: contains a rectangle object and a confidence score for the detection

mmod_rectangles: represents all detections in an image, can be iterated over as a list

batch_mmod_rectangles: represents all detections over a list of images, can be iterated over as a 2d list

ok thanks mate, the changes make sense (especially the equality one, donno why I didnt do that), I'll get this done asap

Looks good.  Thanks for the PR :)


Error in veiw command

Short summary about the issue/question:
Brief what process you are following:

How to reproduce it:

nni Environment:

nni version:
nni mode(local|pai|remote):
OS:
python version:
is conda or virtualenv used?:
is running in docker?:

need to update document(yes/no):
Anything else we need to know:

https://github.com/microsoft/nni/pull/2044

#2044

merged to 1.4? @SparkSnail, @QuanluZhang ?

#2044

merged to 1.4? @SparkSnail, @QuanluZhang ?

Yes, the pr is merged to 1.4


docs: Add CatalystDataGatewayRepository docs

Description
This PR adds usage examples for the CatalystDataGatewayRepository and fixes the failing tests.
Related Issue(s)
List the issue numbers related to this pull request.
Closes #350

@stevenj we agreed with @minikin to movethe content of the README as code comments, leaving the README as it was before.
Mock instructions are not necessary anymore.

As this is not a M2 deliverable, can we retarget the PR to the feat/m3 branch?
I am trying to reduce churn on main leading up to tagging it as the Milestone 2 release.


Standard missile explodes immediately on silo fire

I press fire from launch Controller or use redstone, either way it explodes immediately destroying the silo and then leaves some particles

The standard silo is not implement, hence the WIP on the item tooltip. If you want to fire the missile you need to use the standard launcher frame setup.
https://www.youtube.com/watch?v=MdrxdKoucGo


Add a way to highlight a string without needing to use dom

Hi, would it be possible to support highlighting strings without needing to use the dom, ie like prism.js and highlight.js please?
highlightjs.highlight and prism.highlight

Yes, it is possible, see the runmode addon.

@marijnh hi, does codemirror also support a way to look ahead ie if you highlight per line it needs a way to know if your using HTML but also using javascript
Ie doing

When highlighting per line will it also highlight within

The htmlmixed mode highlights HTML with JavaScript and CSS embedded in it.

@marijnh is there a way to use codemirror.runmode so that it's return is a string, so something like
var results;
results = CodeMirror.runMode(document.getElementById('var = test', "application/javascript");
this.push('_baseRanges', results); (results returning a string)

if callback is empty (which is used to highlight the code by id or class name) then it throws an error.

soemthing like https://github.com/curvedmark/codemirror-highlight/blob/master/lib/highlight.js#L30 but that's too old to use (on npm under codemirror-highlight).
And could we support highlight.js .top to please?
so ie it's used like this in highlight.js
    result = window._hljs.highlight(this._baseLanguage, baseLine, true,
        state.baseContext);
    this.push('_baseRanges', result.value);
    state.baseContext = result.top;

notice result.top and state.baseContext . state.baseContext  pushes up what it reads from result.top, then highlight.js read from state.baseContext and returns it again as result.top.
This is so it can read each string ie if you have something like
<element></element>

it will parse


USB VID/PID Specs for devices that support Native USB

Discussed in https://github.com/harp-tech/protocol/discussions/28

Originally posted by Poofjunior November 26, 2023
I know many existing Harp devices are built with an FTDI chip doing the heavy work of native USB communication. But with the possibility of future devices being built from a different chip that supports native USB, quite a few options open up in terms of being able to use the OS to identify device types.
I'd love for us to consider reserving usb product IDs for mature Harp devices where possible. Pragmatically, open source projects can use the "gifted" vendor id and reserve a product id, free of charge, through pid.codes.
There are two big benefits to being able to set usb descriptor fields. First, we could deploy a firmware update over USB to a specific device identified by type and serial number.
Second, we could identify device types without needing to guess their COM port, which would streamline connecting a new workstation connected to many Harp devices since we don't need to guess their COM port. It would also avoid issues where COM ports change when we add additional devices after-the-fact--very useful for people building ad-hoc experiment rigs!
Current devices from Harp-Tech wont support these features because the FTDI chip leaves them fixed. Since RP2040-based devices running the harp.core.rp2040 library won't have this constraint, there's a chance for us to define preferred behavior for future devices that can support native USB.
Related: I think putting our devices on pid.codes also give us more visibility to other people who could become future tool developers. There's a whole untapped community of open source embedded and hobbyist EEs for whom footprints made on OSHWA and pid.codes is a form of legitimization of our work. (I am from this community!)

Meeting References

https://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_100_USB_VID-PID_Guidelines.pdf
https://www.ftdichip.com/Support/Knowledgebase/index.html?usbserialnumbercontrol.htm

Notes from the references above:

FTDI VID and PIDs are fixed

It is possible to change the PID and reserve one through FTDI directly

It is possible to set a unique serial number (not VID/PID) on the FTDI chip that is instance-specific (2nd link) and is queriable at the USB layer.

The above notes give us a path to be able to make unique serial numbers for existing Harp devices that use FTDI chips.

Here's a proposed specification.
First, note that manufacturer id, product id, and serial number are all queriable fields at the native USB level before attaching a serial port to it (COM0, etc. for Windows, /dev/ttyACM0 etc for Linux.)
For devices, where we can edit these fields (i.e: all devices created with an RP2xx0), I propose:
MANUFACTURER_ID = "Harp Tech"
PRODUCT_ID = "<whoami>.<device_name>"
SERIAL_NUMBER = "<unique_flash_id>"

Exposing these fields enables us to build automation tools that let us:

identify all devices of a specific type, and update their firmware
identify devices by instance number, and assign a specific serial port to it.

(Linux distributions using udev do this automatically by creating a symlink to a unique serial port using the above fields)

This can be done in any project using the Allen Harp Core already by adding the following to the top-level project's CMakeLists.txt
add_definitions(-DUSBD_MANUFACTURER="Allen Institute")
add_definitions(-DUSBD_PRODUCT="white-rabbit")


Cannot get output to USB device even though it is recognized

Prerequisites

[x] I'm not in a dev environment, I'm on release.

[ ] Using npm

[ ] Using an up-to-date main branch

[ ] Using latest version of devtools. Check the docs for how to update

[ ] Tried solutions mentioned in #400

[ ] For issue in production release, add devtools output of DEBUG_PROD=true npm run build && npm start

Expected Behavior
I should get output to my USB DMX device.
Current Behavior
I do not get output to my USB DMX device, even though it is recognized.
Steps to Reproduce

Connect this (my) USB controller to the computer.
Select the USB controller within captivate (see picture)
Set some outputs as per device manual
Nothing happens

Possible Solution (Not obligatory)
I don't think there's output to the USB device.
A workaround for the moment could be loopback output, because then I could reroute it through QLC.
Context
Well, this template isn't very helpful. lol
Yo, I'm a hobbyist and I own a cheap chinese DMX dongle and 2 cheap chinese DMX moving heads.
I'm trying to get captivate to run them but it doesn't output anything.
How do I know it's on captivate's end? Well, it works in QLC+. In QLC, when I click the 'Output' checkmark to my USB device, the moving head starts a blinking light, indicating it receives signal. When I adjust sliders, I can control the device as expected.
In Captivate, this indicator never starts blinking, which suggests to me it's not receiving any signal.
QLC reports the device "has DMX512 output support for DMXKing ultraDMX range, Enttec DMX USB Pro, Enttec Open DMX USB, FTDI USB COM485 Plus1, Vince USB-DMX512". The driver it's using is is libFTDI at 30Hz, in Open TX mode.
I retrieved the log file from Captivate, but nothing interesting is posted:
[2023-11-20 20:41:22.192] [info]  Checking for update
[2023-11-20 20:41:22.236] [info]  Generated new staging user ID: e56a1ae7-0960-590e-9992-59e611f823cb
[2023-11-20 20:41:23.412] [info]  Update for version 0.9.7 is not available (latest version: 0.9.7, downgrade is disallowed).
[2023-11-20 21:00:09.168] [info]  Checking for update
[2023-11-20 21:00:10.498] [info]  Update for version 0.9.7 is not available (latest version: 0.9.7, downgrade is disallowed).

Captivate looks great, I'd love to try it out! I'm happy to help with any efforts that lead to a reproduction or solution to the issue. I'm a developer myself, if that helps, so I should be able to build the project myself if need be.
Best wishes! 🙌
Your Environment

macOS Ventura (13.6) / macOS Sonoma (14.0) (yes I tried on both)
Intel chip (2019 in my macbook pro, Intel 11700k in my hackintosh
Captivate Version 0.9.7
This Chinese USB Dongle
This Chinese DMX512 moving head

Im using a 'EUROLITE USB-DMX512 PRO Interface MK2' Interface which also has a FTDI Chipset. I managed to get it working by forcing it to be recognize as a DMXUSBPro (instead of 'OpenDmxUsb') at this position: https://github.com/spensbot/captivate/blob/b63c37e7ab66c6b6a0d9c780b7f4c835ddf9ad9e/src/main/engine/connections/dmx/DmxConnectionUsb.ts#L52
I don't think i am able to implement the change properly, but maybe it will help someone who can.


issues in quest 2?

Unable to read joints so far using either method:
var joints = evt.detail.data.joints;   is showing an error on load: "SyntaxError: missing : after property id" when loading the page, even when inside enter-vr condition, before vr started
Using the other method, joints shows as undefined:
var leftHand = document.getElementById('left-hand');
var joints = leftHand.components["hand-tracking-extras"].joints;
var Wrist = joints.Wrist;';  // Cannot read property 'Wrist' of undefined, still udf even with delay
hand-tracking-extras is showing as registered in the a-frame inspector, and is in place in the hand
Not sure what I'm missing, tried many variations, including setTimeout delays
Also, added close quote to href for script to avoid 404

hi, sorry for the delay, I currently have only a standard Quest, do you have a glitch, or example which i could debug? Maybe Its not related to quest2

A frame updated in the meantime and seems to be working ok now- thanks for following up.
Sent from my iPhone

On Feb 8, 2021, at 5:25 PM, Piotr Milewski<EMAIL_ADDRESS>wrote:

hi, sorry for the delay, I currently have only a standard Quest, do you have a glitch, or example which i could debug? Maybe Its not related to quest2
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Oh there were changes in aframe 1.2.0 (commit) due to WebXR API changes (old, new).
Thanks for bringing this up, I was too busy to notice the changes. Obviously I need to check out the updates thoroughly, but I've made a quick-fix for aframe-master - https://gftruj-handstuff.glitch.me/. Its a visual debug of joints rotations (raw data, and re-oriented).
If you could let me know if this works for you as well it would mean a lot :)


About collection-repeat and filters on tinder-cards

Nice to meet you all, I'm loic, a french guy working on a wonderfull ridesharing  app built with ionic and rails. I'm here for taking advices,
I use ionic-ion-tinder-cards to display trips on a search results. It's working but i would like your advices about the method to work with filters and tinder cards. There will be a lot of cards... and a lot of filters, they will be filtered first by the origin & destination city searched and after by a filter modal.
Questions :
1 -  ng-repeat or collection-repeat ?
2 -  filters on back-end or on front-end with angular filters ?
3 -  any other advice to do it ?
Thank you !! ionic rocks !

Up

Hey,
Just looked at your issue really quick.
Your app looks nice!
I'm not sure what would work out better (ng-repeat vs collection-repeat)
but what works the best for me is ng-repeat with a tracker (track by id or
track by $index). That mininizes DOM changes in the long run.
As for the filtering, it depends on when is the user supposed to apply the
filters, what kind of filters, and how fast do you need to get back to them
with the results. I will give you two scenarios where I personally pick
backend filtering vs angular filtering.

I have a page in an app that shows you a list of your friends. It's a
small app, users don't have many friends and they can all be loaded at the
same time. Now I would like to implement a search feature so you can type
in a few letters to filter the friends list and find a specific person. I
use angular filter in this situation because: I already have the data
loaded up, I will need to reuse all the data later on, and the user is
expecting immediate results when they start typing in that search box.

I have an application like yours for ride sharing. Users are supposed to
supply me with information before hand (from location, to location,
departure time... Etc) for me to find a match or a few matches for them. In
this case I would set the search form to be in a separate page and every
time I update that information and it gets sent to the sever for
processing. I let the server handle it because it's much easier to run
these kind of queries there. You might need to do some Geolocation based
calculations or perhaps filter thousands of database entries.

So to sum it all up, if you need to filter big data it's better to do it on
the back end for two reasons:

you don't need to let the user download data they dont need
servers are more powerful than smart phones and they are able to apply
multiple filters faster. Most of the filtering can be done in the database
query.

I hope that helped!
On May 9, 2016 10:44 AM, "lmoncany"<EMAIL_ADDRESS>wrote:

Reopened #87
https://github.com/driftyco/ionic-ion-tinder-cards/issues/87.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/driftyco/ionic-ion-tinder-cards/issues/87#event-654479857


shoveler job improvement

award xp for bone mealing crops and adding crops into a composter

farmer*

award xp for milking cows

Add check for adding to composer, milking cows and breeding


Correct highlighting for asymmetric matchers

Summary
I've opened this PR for https://github.com/facebook/jest/issues/6184 and https://github.com/facebook/jest/issues/6170.
From what I could find, there are two cases where Jest shows a confusing diff:

Object properties, which pass asymmetric matchers, are represented as failed fields.
Objects, which are checked against objectContaining or arrayContaining ,  are fully shown in diff instead of only showing the subset of an object.

@pedrottimark I will be waiting for your input regarding what and how :)
I have already read your comment in https://github.com/facebook/jest/issues/7027#issuecomment-423837270.
Test plan
I have added several snapshot tests. I am not sure if this is the best way to illustrate the issue with tests, so the suggestions are highly welcome :)

Yes, thank you for these snapshot tests as baseline so we can discuss desired report.
What do you think about moving expect.objectContaining down one level like hypothetical Flux standard action:
jestExpect({type: 'whatever', payload: {a: 'a', b: 'b', c: 'c', d: 'd'}}).toEqual(
  {
    type: 'whatever',
    payload: expect.objectContaining({
      a: 'x',
      b: expect.any(String),
    }),
  },
)

For your info, a solution to this problem will probably have to be powerful enough to solve another problem of deleted or especially inserted properties:

during first phase of TDD
incorrect assumptions about received value

Even though we mitigated the problem with a more efficient diff algorithm, I think Jest can do even better by understanding when properties are “equal” versus deleted or inserted.
Here are some important special cases when changes include both deleted and inserted props:

key remained the same but value changed
key changed but value remained the same

Although object properties are the first priority, here is an open-ended thought question for more meaningful diff: realistic scenarios when array items don’t match up. For example, React has key prop to decide when a collection changes, is each child the same versus deleted or inserted versus changed.

Here is a small update for now.
To get some inspiration and make sure that I am not gonna try to reinvent the wheel. I have been reading several codebases for the past week(deep-diff, concordance, jest-diff and some others related to diffing two objects).
Since yesterday I started designing a solution. I mostly use objects to reason about the problem, but I want to make sure that in the future the solution will be able to handle other data structures.
So far, I think I am on track, but I might bother you for some advice later this week.

Fantastic @grosto! Looking forward to it 🙂

Hey @grosto, anything we can help with to get this over the line? :)

Hey @thymikee,
I have not had any time to dedicate to this for the past two weeks. Hopefully, I will continue working on it later this week. If this is a high priority, maybe it's better if someone else will take over :)

@grosto no worries, same for me.

Hey, I have some idea to solve this problem.
When jest-diff compare object, we iterate the object first.
If there is asymmetric matcher, check it is match or not.
If match, copy the asymmetric matcher to corresponding attribute.
Example:
const copyB = {...b};
Object.keys(a).forEach(key => {
  if (a[key].$$typeof === Symbol.for('jest.asymmetricMatcher')) {
    if (a[key].asymmetricMatch(copyB[key])) {
      copyB[key] = Object.assign(a[key], {});
    }
  }
});

And using this new object to diff.
Result:

I am back on this!
Sorry, I started a new job and really could not find a spare second. :)
I will need a day or two to remember the codebases and gather my thoughts again. I will get back with some ideas after that.

After having a fresh look at the problem, I was not really fond of my ideas from a month ago 😅. So I decided to think a bit more about it.
In order to provide a better visual representation of data differences,  we have to change our approach from serialize-then-diff to diff-then-serialize. As already mentioned by @pedrottimark.
Below is some idea(In a very very naive Typescript):
const INSERTED = 'INSERTED';
const DELETED = 'DELETED';
const EQUAL = 'EQUAL';
const UPDATED = 'UPDATED';
const TYPE_EQUAL = 'TYPE_EQUAL';

type DiffResult =
  | typeof INSERTED
  | typeof DELETED
  | typeof EQUAL
  | typeof UPDATED
  | typeof TYPE_EQUAL;

interface PrimitiveValuesDiff {
  diffResult: DiffResult;
  path?: string;
  rhsValue?: PrimitiveValue;
  lhsValue?: PrimitiveValue;
  // there will be more fields needed for sure
}

interface ComplexValuesDiff {
  lhsConstructorName?: string;
  rhsConstructorName?: string;
  path?: string;
  diffResult: DiffResult;
  propertyDiffs: (ComplexValuesDiff | PrimitiveValuesDiff)[];
  // there will be more fields needed for sure
}

// example of two object diff
const expected = {
  a: 1,
  b: {
    c: expect.any(Number),
    d: 2,
    e: 3,
  },
};

const received = {
  a: 1,
  b: {
    c: 1,
    e: 4,
  },
};

diffComplexValues(expected, received, options);

{
  lhsConstructorName: 'Object',
  rhsConstructorName: 'Object',
  diffResult: TYPE_EQUAL,
  /* type equality is sufficient for complex values */
  propertyDiffs: [
    {
      path: 'a',
      rhsValue: 1,
      lhsValue: 1,
      diffResult: EQUAL,
    },
    {
      path: 'b',
      lhsConstructorName: 'Object',
      rhsConstructorName: 'Object',
      diffResult: UPDATED,
      propertyDiffs: [
        {
          path: 'c',
          diffResult: EQUAL,
          lhsValue: expect.any(Number),
          rhsValue: 1,
        },
        {
          path: 'd',
          diffResult: DELETED,
          lhsValue: 2,
        },
        {
          path: 'e',
          diffResult: UPDATED,
          lhsValue: 3,
          rhsValue: 4,
        },
      ],
    },
  ],
};

`
- Expected
+ Received

  Object {
    "a": 1,
    "b": {
      "c": 1,
  -   "d": 2,
  -   "e": 3,
  +   "e": 4,
    }
  }
`

The ComplexValuesDiff will be sufficient to produce a string representation of data differences/commonalities. With some extra fields, this data structure can be also used to describe diffs of Arrays, Maps, and Sets.
Important Note: I am not suggesting to create a big diff object and then pass it to another function to generate a diff string. We are probably going to create a diff string as we are traversing an object. The only reason why I made these types is that it's easier for me to illustrate the idea.
It is crucial that diff function is consistent with the equality one. We can extract the smaller functions from current equals. Then use these small functions to create a consistent equality and diff functions.
The new diff function can be used instead of compareObjects function in jest-diff, or it could be part of expect package.
I am still trying to solve expect.objectContaining. It only has asymmetricMatch method, which does the comparison and returns a boolean. The traversal of the object happens inside the asymmetric matcher, so there is no way to see which fields pass/failed from outside this class. I have some ideas on how to solve this, but I am not sure about them. Any suggestions are welcome :)
Glad to hear any feedback :)

@grosto Super excited that you're working on tackling this long-standing design limitation!
Quick question: What's the difference between UPDATED and TYPE_EQUAL? Paths [] and ['b'] look like they should be the same case?
expect.* will probably supply functions that generate a custom diff specific to the matcher, right? If so, expect.objectContaining could generate an EQUAL node with the received value for properties that match or were unspecified, and UPDATED for mismatches?

Thank you for sharing your thoughts!

I am not suggesting to create a big diff object and then pass it to another function

Great minds think alike: Scott Hovestadt is working on streaming interface for Jest reporters

I am still trying to solve expect.objectContaining

Yes, asymmetric matchers were a puzzle to me. Lack of API came up recently https://github.com/facebook/jest/issues/8295#issuecomment-483157466

It is crucial that diff function is consistent with the equality one …

Yes indeed, this paragraph is brilliant
Yes, let’s start with descriptive data structure to prototype enough parts to illustrate a few of the most desired improvements. I experimented with tuples, but hard to debug when I messed up.

Then use these small functions to create a consistent equality and diff functions

A question in my mind is how closely to couple the small functions to compare and format:

loosest coupling is format functions match according to lhsConstructor and rhsConstructor properties, similar to serializer plugins which have a test method
tightest coupling is compare function assigns format function as a property

I think the solution will be looser, but a vague idea for asymmetric matchers is to be able to provide formatter as optional property of the comparison data structure.
Which reminds me to throw out for discussion possible end goal for packaging:

move equality (after deep cleaning of edge cases and breaking changes) into separate package like jest-equal
create corresponding comparison into new package in Jest monorepo
create corresponding formatting into new package in Jest monorepo

Forgot to say about consistent functions, as comparison corresponds to equality, format functions borrow the best from pretty-format and jest-diff and overcome their limitations.
In your example, be able to display the change lines for updated primitive value:

property key in dim color
property values in green versus red

-   "e": 3,
+   "e": 4,

Also I think default --no-expand option will mean something other than number of adjacent lines.

While thinking about formatting that is possible given comparison, here is a use case to consider
Highlight which properties in received object match expected object for negative toMatchObject
Example picture baseline at left and improved at right:

@jeysal Thank you for your input!

Quick question: What's the difference between UPDATED and TYPE_EQUAL?

UPDATED means that primitive values are not equal. When it comes to complex values, we do not need to know if they are deep equal or not. All we care about is if their type is equal. if it is, we continue checking their keys, otherwise we can mark them as UNEQUAL and move on. I see how this is confusing with current types.
@pedrottimark Thank you for your feedback. I am glad that we have the same vision and thank you for providing more problems to keep in mind while solving this problem.

Highlight which properties in received object match expected object for negative toMatchObject

I have been thinking about the interface to create a subset diff for toMatchObject /objectContaining and in general, make diff more customizable.
Currently, I am working on extracting smaller functions from equals  and how to compose new diff and equality with them.

While trying to write a minimal formatter, here are thoughts about the descriptive data structure:

distinguish “complex” from “basic” comparison objects by presence or absence of propertyDiffs
for lhsConstructorName and rhsConstructorName replace string with actual object as value
and then have consistent keys in “complex” and “basic” comparison object as lhs and rhs or even consider as terse as a and b following convention in jasmineUtils.ts and utils.js

if it is, we continue checking their keys, otherwise we can mark them as UNEQUAL and move on.

But do you not want to mark them properly once we've finished recursing into them? If TYPE_EQUAL could mean EQUAL and UPDATED it e.g. won't allow you to collapse a part of the diff where you know everything is equal.

@grosto @jeysal

Maybe reverse the reasoning so TYPE_UNEQUAL is value for non comparable complex values, like Object and typed array, for which you might short-circuit the comparison?
An interesting case is comparison of basic versus complex value, when it seems like UPDATED and no need for propertyDiffs but the formatter might display properties of the complex value (this is evidence why the object instance is needed as a value in comparison object)
In my rough prototyping, a complex comparison function kept local propertyDiffs array, but returned it as property value only if diffResult was UPDATED not for EQUAL

These cases are evidence against what I suggested about absence of propertyDiffs as a hint ;)
When no relevant prop diffs for complex value, possible formatting convention could include ellipsis:

{…} for plain object or […] for plain array
MyClass {…} for derived class or Int32Array […] typed array

Is this fixed now that we've landed #9257?

Hi,
The scope of this PR was intended to be larger than just asymmetric matchers, it's more about changing the jest's diff solution. Is this still something that jest's team considers doing? I have not had free time to contribute to open source for the past months, but I would love to come back to this problem. Also, I think this PR contains valuable context if somebody else would pick it up.

it's more about changing the jest's diff solution. Is this still something that jest's team considers doing?

If it's improved/more usable, we're always open to it 🙂 It's at least been documented now: https://github.com/facebook/jest/blob/master/packages/jest-diff/README.md

Happy to keep this open, I just wondered if it might have been solved 👍

Hello,
I have finally found some time for this. Sorry for keeping it for so long. I have pushed partial implementation with tests and README.md. Will be waiting for the feedback.

To clarify I am waiting for a feedback on this one to continue.

I'm so sorry you haven't received feedback on this yet :(
I'm very interested in this topic (in fact I considered exploring an impl of this myself) but atm I'm barely getting my work on other things (the babel-plugin-jest-hoist rewrite, the prettier-less snapshots) done :cry:
Please don't be discouraged by this, I will get to it sooner or later :upside_down_face: and it's totally fine if you want to wait for feedback before proceeding of course.

No worries. Thanks for replying.
The rest of the work will be based on this foundation and I want to make sure it's a good one, before I continue. So I would rather wait for feedback for now.

I think this would currently help me figuring out a diff I cant make heads or tails off due to it currently outputting the whole objects instead of the actually difference between them.

I will get to it sooner or later

Yeah this was later rather than sooner.
Fortunately, as this is a new package intended to completely replace existing ones, it does not get out of date :see_no_evil:
So, @pedrottimark has not been seen on Jest for a while, but maybe we can get this over the line still?
The code is obviously a lot and some pasted so it's hard to review without anyone working full-time on Jest other than scanning for obvious open points, but I suppose if we can just do a run of the expect toStrictEqual test values on this and make sure every non-equal value pair generates a diff on this and every equal pair generates no diff, then that's probably a good enough indicator that it's solid.
Plus maybe some of us can link it into some Jest work projects, use it for a while.
This is just way too much work and way too important to leave hanging like this, and the DiffObject structure looks like exactly what we need :see_no_evil: wdyt @SimenB

Yeah this was later rather than sooner.

No worries. I am here still to get this to the finish line, I was just not sure if there was still interest.
diffComp.test.ts runs some tests to make sure that the behavior of this diff and old diff match in most cases.
I understand that there is a lot of code did you manage to read README file? it describes what's missing and how everything is currently implemented. Let me know if you have any immediate feedback from reading it.

Codecov Report

Merging #7893 (7538026) into master (b3f9e4a) will increase coverage by 0.38%.
The diff coverage is 75.54%.

@@            Coverage Diff             @@
##           master    #7893      +/-   ##
==========================================
+ Coverage   64.24%   64.63%   +0.38%
==========================================
  Files         308      323      +15
  Lines       13502    13960     +458
  Branches     3289     3412     +123
==========================================
+ Hits         8675     9023     +348
- Misses       4117     4201      +84
- Partials      710      736      +26

Impacted Files
Coverage Δ

packages/jest-deep-diff/src/complex/map.ts
3.33% <3.33%> (ø)

packages/jest-deep-diff/src/complex/utils.ts
50.00% <50.00%> (ø)

packages/jest-deep-diff/src/getType.ts
59.37% <59.37%> (ø)

packages/jest-deep-diff/src/complex/array.ts
70.21% <70.21%> (ø)

packages/jest-deep-diff/src/complex/object.ts
77.08% <77.08%> (ø)

...es/jest-deep-diff/src/plugins/asymmetricMatcher.ts
77.27% <77.27%> (ø)

packages/jest-deep-diff/src/diff.ts
77.77% <77.77%> (ø)

...ackages/jest-deep-diff/src/normalizeDiffOptions.ts
77.77% <77.77%> (ø)

packages/jest-deep-diff/src/primitives.ts
78.75% <78.75%> (ø)

packages/jest-deep-diff/src/index.ts
81.81% <81.81%> (ø)

... and 21 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b3f9e4a...7538026. Read the comment docs.

Now that architecture is somewhat stable(at least API of diff object), I wanted to implement some new thing and also fix some skipped tests. I also observed some interesting properties/tradeoffs of diff and then serialize approach.
Let's start with the pros:
I implemented expect.objectContaining and you can see the differences(the top one is old diff):
const a = {
      payload: {a: 'a', b: 'b', c: 'c', d: 'd'},
      type: 'whatever'
};
const b = {
    payload: expect.objectContaining({
        a: 'x',
        b: expect.any(String),
    }),
    type: 'whatever',
 };

This is field updated example. Inserted, Deleted and Unequal Type fields all have big improvements too.

We can also correctly understand inverse matches
const a = {
  payload: {a: 'a', b: 'b', c: 'c', d: 'd'},
  type: 'whatever'
};

const b = {
  payload: expect.not.objectContaining({
    a: 'x',
    b: expect.any(String),
  }),
  type: 'whatever',
};

const a = {
  payload: expect.not.objectContaining({
    a: 'a',
    b: expect.any(String),
  }),
  type: 'whatever',
};

const b = {
  payload: {a: 'a', b: 'b', c: 'c', d: 'd'},
  type: 'whatever',
};

I also expect to see the big improvements on arrayContaining too. Have to implement it first.
Downsides:
Map diff is harder to implement because keys can have diffs too not just equality. So it means that we have to compare each key in the map to other keys until we find the closest match. For now, I am only comparing two keys with Map.has().
It's easier for old diff to do this because just looks for differences in strings and it does not have any notion of data structures. To make it visual
const a = new Map([[{a: 1}, 2]]);
const b = new Map([[{a: 2}, 2]]);

Currently, I am not traversing the complex keys of the map, so formatter cannot display them properly.  That's easily solvable. Bigger complexity is the diff algorithm.
The second downside is easier to see than to explain. I am not even sure if this is a downside, but there are some similarities that old diff picks up that we cannot pick up(easily at least)
const a = {
  searching: '',
  whatever: {
    a: 1,
  },
};

const b = {
  searching: '',
  whatever: [
    {
      a: 1,
    },
  ],
};

Let me know what you think and I will continue working on this.
I still have to implement the remaining asymmetricMatchers, DOM and Set. Improve Map.  Add back React Element and finally add the same options as old diff had

Codecov Report

Merging #7893 (5b1daef) into master (2abd495) will increase coverage by 0.59%.
The diff coverage is 80.54%.

@@            Coverage Diff             @@
##           master    #7893      +/-   ##
==========================================
+ Coverage   64.19%   64.79%   +0.59%
==========================================
  Files         308      323      +15
  Lines       13519    14033     +514
  Branches     3293     3443     +150
==========================================
+ Hits         8678     9092     +414
- Misses       4126     4191      +65
- Partials      715      750      +35

Impacted Files
Coverage Δ

packages/jest-deep-diff/src/complex/utils.ts
50.00% <50.00%> (ø)

packages/jest-deep-diff/src/complex/map.ts
56.09% <56.09%> (ø)

packages/jest-deep-diff/src/complex/array.ts
61.70% <61.70%> (ø)

packages/jest-deep-diff/src/getType.ts
65.62% <65.62%> (ø)

...ackages/jest-deep-diff/src/normalizeDiffOptions.ts
77.77% <77.77%> (ø)

...es/jest-deep-diff/src/plugins/asymmetricMatcher.ts
78.12% <78.12%> (ø)

packages/jest-deep-diff/src/complex/object.ts
79.16% <79.16%> (ø)

packages/jest-deep-diff/src/index.ts
81.81% <81.81%> (ø)

packages/jest-deep-diff/src/diffObject.ts
86.66% <86.66%> (ø)

packages/jest-deep-diff/src/diff.ts
86.95% <86.95%> (ø)

... and 20 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2abd495...5b1daef. Read the comment docs.

I think the second 'downside' is totally okay, we don't need to show similarities that happen to be somewhere deep down in the structure even if what's wrapping them is totally different.
The map thing is annoying indeed, I totally didn't have it in my mind that you could have these kinds of keys to a map...
One thing struck me as odd:

In this diff, the new impl generates a 'no visual difference'? Isn't that less than ideal?

They are equal so there is no difference to show. Wording could be changed. I copied it the old diff i think

Are they? It's expecting an object not containing b: any string, and getting an object with b: 'b' isn't it?

I even check in the test that they are equal.
https://github.com/facebook/jest/pull/7893/files#diff-93c714843afcedbd3f472f3dc8da523e81a2c23630a6e2e299fa80c4423aaac1R314
I get where you are coming from. I don't think that's how objectContaining behaves. It just checks if one object is subset of another.

Ah right yeah. Sorry. We even had a debate or some changes around how .not.objectContaining works, but apparently I had the wrong idea in my mind about how it works now after all :sweat_smile:

@grosto @jeysal hi! are you still interested in landing this PR? I've merged in main, but I don't know what else is missing

Funny, just yesterday I was thinking of this because I was myself experimenting with deep diffing algorithms.
I think this is still in the top 5 reworks that Jest needs, along with config, ESM, faster default transforms, etc.

Integrating it into expect, pretty-format, jest-diff as a behind the scenes implementation, that is I think where the majority of the remaining effort lies.
I would also want to hammer some fast-check tests at all the matchers using new and old impl to be really sure that passes and fails are unchanged (only formatting/diff should be rightfully changed).
In terms of implementation IIRC this was looking pretty good to me the last time I looked at it.
Since it is not yet actually used (it only implements the new package) there is little harm in merging it. Yes it will be dead code, sort of, for now. But if we ever continue this rework, this should be the code that we use.

As you know @SimenB I've been completely inactive on Jest this entire year, and aside from a blog post mostly inactive in 2021 too.
I'm currently taking a couple months break from work traveling etc. I've been thinking about what I want to do next. One of my thoughts was whether we could utilize some of that OpenCollective money to actually "employ" me, either just for a while until I start a more "classic" job again, or part-time next to some other job, so that we can get some of these big projects moving, get the issue tracker under control, etc.
Some food for thought...in about a month or so I will probably have to decide what to do next.

Oooh, I think it's a great idea if we could get somebody on top off the repo on a more consistent basis than my "I do what seems interesting, sometimes"! Let's discuss on discord


Typo in link to .net sdk

I attempted to fix a broken link, but it seems i need to clone the whole repo to do so?
https://github.com/FlaxEngine/FlaxDocs/blob/c8d26bc70962ea9bdc52d12043d84f1cff1df19d/manual/get-started/requirements.md/#L1
the link to the .net sdk starts with ttps:  when of course it should be https:
Perhaps a public Wiki would make more sense

Yeah, Flax Docs are not Wiki but open documentation that can be cloned and updated with PRs from the Community. Still far better than Unity or Unreal docs xD
Thanks for spotting and reporting this. Fixed by @Rayumie in #99. I'll trigger docs rebuild to reflect this change.


[ROS Noetic] Release the package

Release the massrobotics_amr_sender package for ROS Noetic (noetic-devel). Here are the steps to do it with Bloom.
Take into account that the ROS1 to ROS2 migration guide recommends using different release repositories.

@FlorGrosso this issue seem staled ? Is it still valid ?


Added Geo Functionality

New Redis functionality for geo date type now supported:
GEOADD
GEODIST
GEOHASH
GEOPOS
GEORADIUS
GEORADIUSBYMEMBER

Mutli bulk array was implemented in Redis response parser to support response of GEORADIUS.

@andyqzb ^

@mahdi-hdi Can you fix your test cases of geo cmd?

@andyqzb The test cases use redis-py but the problem is that they didn't release GEO functionality yet (lastest version is 2.10.5). So, you must fetch their master branch in case of testing which I prefer don't add it to travis.sh.

Bump

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Support for parsing geo commands was added as part of a larger change to add support for many new/updated redis commands based on the latest commands.json published for redis, see 1239ef9e2f14f954b0f5da22369c0d994a347e45 and https://github.com/twitter/twemproxy/pull/599 (etc.)
A more generic approach was also added yesterday to support parsing multi-bulk responses of arbitrary depths and shapes


Exome calling lists include chrM

Recently Paul (VCGS) flagged that Mito variants are coming through into Exome AIP reports
The final line of gs://cpg-common-main/references/hg38/v0/exome_calling_regions.v1.interval_list
is chrM	427	16173 ...
The whole-genome equivalent gs://cpg-common-main/references/hg38/v0/wgs_calling_regions.v1.interval_list terminates at chrY
We have a separate mito calling workflow, so is this accidental calling?

This is sourced from the public Broad references
$gsutil cat gs://gcp-public-data--broad-references/hg38/v0/exome_calling_regions.v1.interval_list
...
chrM	427	16173 ...

It's only a few kb, we could easily subtract it from our exome interval list, but I'm curious what is the downside to calling variants in this region? Is it just that it's better to leave them to our mito specific pipeline?

The downside here is that Mito calling is fundamentally different - instead of 2 chromosomes, cells contain a load of mitochondrial genome copies, instead of WT/Het/Hom, mito calling is a continuous range of % Mito genomes with a variant. In that sense it's more like somatic/cancer analysis where variants can be picked up at really low levels whilst still being true, so it takes a different approach to get clean results.
HaplotypeCaller and JointGenotyping aren't optimised for that - it's not to say the results are bad or wrong, just that we've probably not looked into the quality of calls in this region.

Our mito calling pipeline is currently untested on exomes, but should work perhaps with some minor tweaks.  Different exome captures are variable in how many mito reads they return but modern ones have decent coverage so we should move to support this. Once that is done we should remove Mt from our target intervals.


Cache pip packages per version rather than per project

We are currently saving the pip cache per project, which can lead to some weird deps problems when building from different versions.
https://github.com/rtfd/readthedocs.org/blob/768856e3f72fd0ec1e4fbe9eab8913cb5f01b490/readthedocs/projects/models.py#L616-L621
Ref https://github.com/rtfd/readthedocs.org/pull/5680#issuecomment-491095510

which can lead to some weird deps problems when building from different versions.

What are these problems?

Different versions have different requirements, dependencies of another dependencies, etc.

Also if the cache gets corrupted, users need to wipe in order to get it working again.
And we can't clean the cache in #5680

Also if the cache gets corrupted, users need to wipe in order to get it working again.

I don't think we are having this problem.

And we can't clean the cache in #5680

There is no need to save a cache if we are going to clean it after use it once. If that's what we want, we just don't need to save the cache at all. We can use,

do not mount a a volume outside the docker container
use --no-cache-dir option in pip

Having a per-version pip cache does not makes too much sense to me.

I'm going to close this, I think it goes against our goal of removing caching entirely. If we weren't on this path, it would be a helpful feature, but I think the benefits ephemeral build process bring will trump any gains by tuning caching


Changing multiple property values in the CSS module

Issue description:
it seems that there is only 1 property value that can be changed in the "output" parameter, in cases were you might want to change 2 or more property values eg: "background: red; & display: block;" is there a way to do that?
Version used:
3.0.25
Using theme_mods or options?
theme_mods
Code to reproduce the issue (config + field(s))

Sure there is...
The output parameter is an array of arrays. Each array inside the output argument can be a completely different set. It's all in https://aristath.github.io/kirki/docs/modules/css.html


High memory usage when resizing thumbnails

Hello, thank you for your great work on PocketBase, I used it for a little internal project and was pretty happy with how it went. I only have one issue. The process uses a lot of memory (over 1.5GB) when resizing thumbnails and eventually is OOM-Killed.
My tool lets people upload high resolution photos (many are over 5MB). When I open that PB-Dashboard to view the collection, the browser tries to load many thumbnails (40 per page) at the same time. This causes the server to use a lot of memory and eventually crash (usually at the second Page).  This behavior can only be observed on newly uploaded photos for which the thumbnails have not yet been generated.
Now I understand that resizing large images requires that they are kept in memory and some memory usage is inevitable. But I am running the container with a 2GB memory limit and I think this should be sufficient.
Also what seems a bit strange to me is that the memory usage is way above the actual size of the images. Resizing 80 Images with around 5MB each (400MB total) results in a memory consumption of over 2GB.
Possible Solution: I think it would be really important to be able to limit the number of thumbnails that are generated concurrently.
Keep in mind, that generating many many thumbnails at the same time will probably slow the server down causing the next thumbnails to be generated even slower and thus the images are kept in memory even longer.
Also might be the case that the same thumbnail is generated more than once but I am not sure about that. I can imagine that users refreshing the page when thumbnails are slow to load makes the problem even worse because the browser might be requesting the same thumbnail, that is already processing, again.
It might also be possible that the concurrency is not the core issue here and that there is a memory leak somewhere but I don't know about that. Definitely should be further investigated, it is possible that limiting the concurrency would only hide some of the symptoms of a different problem.
Also, if you can point me into the right direction I can try to create a PR myself to fix the issue.

If you are experiencing memory issues, you can try defining the GOMEMLIMIT=500MiB env variable (it is a soft limit and will instruct the GC to run more often once the threshold is reached).
I don't think that there is a memory leak, but bulks thumb generation can definitely be improved.
We can try to create a worker pool and restrict the thumb generation processes. I'm currently busy with other tasks, but if anyone want to pick it the thumbs generation code is located in
https://github.com/pocketbase/pocketbase/blob/985ab1e5b79a328b516decca3d1d7dc8edfcbba0/tools/filesystem/filesystem.go#L393.
It is invoked as part of the download endpoint in https://github.com/pocketbase/pocketbase/blob/985ab1e5b79a328b516decca3d1d7dc8edfcbba0/apis/file.go#L154.

I have already set GOMEMLIMIT without much success.
But I will try to have a look at the issue and maybe create a PR.

Are you sure that the env variable is loaded by the container?

I will check the env variable again.
S3 storage is used.

S3 storage is used.

In this case the memory consumption can be actually caused by the filesystem abstraction because we still need to reread and upload the generated thumb. It will need more elaborate investigation to pinpoint the exact cause of the issue (note that the gocloud.dev/blob and aws/aws-sdk-go most likely will be removed in the future since they are currently ~50% of the binary size).

Still I think limiting concurrency should probably improve the situation as fewer full-sized images would have to be read and kept in memory at the same time in the FS abstraction.

Yes, definitely. Adding workers pool and somewhere to temp store the currently resizing thumb identifier will also prevent the edge case when multiple clients request a new thumb at the same time (currently I guess it will generate and overwrite the same thumb for each request in this situation which is not ideal).
If you have the time, feel free to open a PR with the suggested implementation. If no one picks it, after the logs generalization tasks I'll have a more detailed look at it.

I will try to have a look when i find the time in the next few days.

hi ganigeorgiev, just wondering, is this gonna be part of 0.23 main branch and if not do the original recommendation for extending still stand or would there be something else to consider. Might have a go at this but can't promise much.
I had run into this issue myself when running pocketbase on a $5 Linode vps. with 1Gb ram.

@aleBranching You are comment to a very old issue. The above mentioned concurrent thumb generation limit is already available in PocketBase v0.20+.
If you think that it can be done better feel free to open a PR and I'll try to review it but the note and the recommendations in my comment still remains.


defaultLanguages option causes weird behaviours (duplicate keys, unable to delete documents)

Hey there,
thanks for the plugin, it worked nicely while not using the defaultLanguages config option. 😅
Issues
When using it, I encountered some problems:
Issue 1 - Duplicate keys
Creating a new document via the UI and with the option configured, this is the result for all translated fields:

Looking at the data (*[_type == "project"] { translatedString1, translatedString2, translatedStringText } - same for every field):
"translatedString1": [
    {
        "_key": "en",
        "_type": "internationalizedArrayStringValue"
    },
    {
        "_type": "internationalizedArrayStringValue",
        "_key": "en"
    }
],

When creating a document, there are two POST requests
https://<id>.api.sanity.io/v2022-09-09/data/mutate/production?tag=sanity.studio.document.commit&returnIds=true&visibility=async&skipCrossDatasetReferenceValidation=true

containing sth. like the snippet below, so makes sense that keys are duplicated (I also observed the same field being patched twice in the same request, e.g. translatedString2[-1]):
{
    "patch": {
        "insert": {
            "after": "translatedString2[-1]",
            "items": [
                {
                    "_type": "internationalizedArrayStringValue",
                    "_key": "en"
                }
            ]
        },
        "id": "drafts.<same-id>"
    }
},
{
    "patch": {
        "insert": {
            "after": "translatedString2[-1]",
            "items": [
                {
                    "_type": "internationalizedArrayStringValue",
                    "_key": "en"
                }
            ]
        },
        "id": "drafts.<same-id>"
    }
},

I can generate unique keys and fix the "deduped" key to be of a valid language via the UI, but… for now I'll go without the config option and having to click the languages every time
Issue 2 - Document deletion not possible
Deleting a document in this state is not possible, the delete request gets aborted and a POST request with createIfNotExists for every translated field follows. Removing the defaultLanguages option will delete it successfully. I know there were issues before that covered this, but it's still happening for me (in this state)
Reproduction
I created a reproduction repo based on this template with a few added fields in the project document where this behaviour should be observable (it is for me every time, using Firefox). You should only have to enter valid API credentials.
Using the latest version of the plugin (1.10.3). If you have any further questions, let me know!
Thanks for your input!

I'm also facing this exact issue. It does seem to be a problem with the plugin.

Hi!
I am having the same problem. I've been having this for some time and ignoring, but now that is time to deliver the project, while bug hunting I found this thread.
This is the schema:
export default defineType({   name: "pages",   type: "document",   title: "Pages",   fields: [     defineField({       name: "title",       type: "internationalizedArrayString",       title: "Title",     }),     defineField({       name: "slug",       type: "slug",       title: "Slug",       description: "This is used to generate the URL for this category",       validation: (Rule) => Rule.required(),       options: {         source: "name",         maxLength: 44,       },     }), ],   preview: {     select: {       title: "title",     },     prepare(selection) {       const { title } = selection;       return {         ...selection,         title: title[1].value || "Untitled",       };     },   }, });
And this is my config:
 internationalizedArray({       languages: [         { id: "el", title: "Greek" },         { id: "en", title: "English" },       ],       defaultLanguages: ["en"],       fieldTypes: ["string"],     }),
I tried adding a _key to the schema fields but it was not recognized. Perhaps I was doing it wrong but I couldn't find a way to add it manually.
Any help would be appreciated

any one found the solution for this?

Issue is still present to this day

any one found the solution for this?

Have not entirely worked this through, but could this be related to maintaining multiple language-files(e.g. languages.json and languages.js)?

any one found the solution for this?

Could this be somehow related by having two language-files in the setup, e.g. languages.js and languages.json?

Didn't find a solution. I just ended up removing the defaultLanguages from the config and moved on with the project in other ways.

Didn't find a solution. I just ended up removing the defaultLanguages from the config and moved on with the project in other ways.

Yes, seems to be the only option left on the table. Thanks for letting us know.


Add AFNetworking-Synchronous

Project URL
https://github.com/paulmelnikow/AFNetworking-Synchronous
Description
Synchronous requests for AFNetworking.
Why it should be included to awesome-ios (optional)
AFNetworking only supports async requests. While this is the preferred way to handle things, there are circumstances when it doesn't work, such as when another framework is providing the threading. This is a proven solution with automated tests. There's no need to reinvent the wheel with GCD.
Checklist

[x] Only one project/change is in this pull request
[x] Addition in chronological order (bottom of category)
[x] Supports iOS 9 / tvOS 10 or later
[ ] Supports Swift 3
[x] Has a commit from less than 2 years ago
[x] Has a clear README in English

Thank you for contributing to awesome-ios 😄