After DTLS handshake by PSK. server send WRITE request on /0/1 using TLV, the package of CoAP is incomplete.

Question
Hi
now we used our client to connect the Leshan bootstrap server in DTLS and PSK, after handshake the server send the application data to client to write the DM server information of the object, our client parse the CoAP package and the package size is incomplete. smaller size than the real size. pls help to check whether it is a bug in bootstrap server, thanks!
endpoint name: rw001
PSK identity: iot_app_100
PSK key:8c455cea1475443266418f1600b231a1c92b2adedd2526f36bf61ab132976a1c
the server process is below:

our client log as below, we print the whole buffer, the payload is TLV length is 38 is bigger than the payload 24, and the whole buffer length is 44

Wireshark capture package:
tcpdump.zip

I tried to decrypt the wireshark capture without success. I don't know exactly why...
I tried to simulate you device with same endpoint name same credentials, same ciphersuite, same prefered content format with leshan-client-demo and I able to decode the wireshark capture I created on my side.
I see nothing wrong at server side. TLV seems well formed and decoded by leshan-client-demo and wireshark without issue.
At first sight, I rather bet on a problem at your client side.

hello sbernard
thanks for your help Could you pls help upload your test Wireshark log, we want to make a compared to find the different.
in our Wireshark, there is no finish package from client and server, and transfer the application data, whether we can estimate the handshake is failed？

BRS

I will try to do that next week.

OK，I will closed ticket #1547，thanks！
if the procedure is OK，
we received the UDP socket package length is incomplete, so after ssl decode, the result also incomplete. do you have some way to record the server log if our client connects the bootstrap server, we can compare the origin data that server sends.

and we parse the buffer to ASCII, it is incomplete. "coap://leshan.eclipse"
200 -> È
0   -> (空字符)
37  -> %
99  -> c
111 -> o
97  -> a
112 -> p
58  -> :
47  -> /
47  -> /
108 -> l
101 -> e
115 -> s
104 -> h
97  -> a
110 -> n
46  -> .
101 -> e
99  -> c
108 -> l
105 -> i
112 -> p
115 -> s
101 -> e

You can easily run a leshan-server-demo on a machine you can control and so do the capture on your own.
See : https://github.com/eclipse-leshan/leshan#test-leshan-demos-locally

Hi sbernard
yes, we try before but the failed because of the Information security in our network.
1.Did the server split packet when the CoAP package is larger.  Are there any markers to confirm it from server package.
2.last time you try in your client is ok. If possible, could you please support your Wireshark log for compared, thanks.
the PSK now modify below:
rw001
iot_app_100
713073559dead664a293238a651054f77ca91e97ba301898c2fa059e8bf14db9
BRS

If possible, could you please support your Wireshark log for compared, thanks.

I will do it as I found time but I again I rather bet on an issue at "your" client side...
What are you using  as DTLS and CoAP stack ?

Hi sbernard
yes, we use DTLS and CoAP, it is very kind of you, thanks a lot.
at the same time, we also confirm the CoAP split packet in spec.
BRS

Just took over the problem, I am not really sure. may be openssl and wakaama.😅

if it is no use block-wise, what else could be causing only half the data

"Let us be well assured of the Matter of Fact, before we trouble our selves with enquiring into the Cause"
If you are able to decode your wireshark capture you could ealisy see if there is block transfer OR not. (I'm not able to do that with your capture as explained at : https://github.com/eclipse-leshan/leshan/issues/1543#issuecomment-1824212650
If you can not do that you can also try to bootstrap you device with exactly same config instead you don't use DTLS at Bootstrap server side and so you will see packet in clear and so easily see if blockwise is used.

Here the capture done with leshan-client-demo lightly modified to use TLV like your device.
The modification in LeshanClientDemo:
        // Configure Registration Engine
        DefaultRegistrationEngineFactory engineFactory = new DefaultRegistrationEngineFactory();
        if (cli.main.comPeriodInSec != null)
            engineFactory.setCommunicationPeriod(cli.main.comPeriodInSec * 1000);
        engineFactory.setReconnectOnUpdate(cli.dtls.reconnectOnUpdate);
        engineFactory.setResumeOnConnect(!cli.dtls.forceFullhandshake);
        engineFactory.setQueueMode(cli.main.queueMode);
+       engineFactory.setPreferredContentFormat(ContentFormat.TLV);

the command line :
java -jar leshan-client-demo.jar -b -i iot_app_100 -n rw001 -p 713073559dead664a293238a651054f77ca91e97ba301898c2fa059e8bf14db9 -u coaps://leshan.eclipseprojects.io:5784 -c TLS_PSK_WITH_AES_128_CCM_8

The Capture :
capture_with_leshan_client_demo.zip

Hi sbernard
we compared between our Wireshark, and you capture for us. and we found in our client connect Leshan server, Leshan server response the same packet was sent twice. every package from handshake to application data.
two package identifiction is same, pls refer the screenshot below:
frame47:

frame48:

Hi sbernard，
it's weird that we cannot decode the package in our device.
any way you can filtration the package that IP of us？
BRS

I said before when I tried to reproduce your use case. All works as expected to me.
For some reasons I can explain, I'm not able to decrypt your capture while I can do it with mine (which use exactly same credentials/cipher) => so there is something strange with your way to capture OR you network OR something else ?
With current information I can do nothing.
If you think there is something wrong in DTLS library we are using you can try to open a bug at : https://github.com/eclipse-californium/californium/issues (but I would be surprised if that was the issue)

So, I advice you to make your tests step by step :

Do not use DTLS, run a leshan-bsserver-demo on a machine you control and test with leshan-client-demo (make sure you can do capture at client and server side),
Then same test with your device instead of leshan-client-demo,
Then use DTLS , with leshan-client-demo,
Then use DTLS with your device.

Hi sbernard
we tried connecting with Leshan server without DTLS by our device, it is the same that every package from server was sent twice. This phenomenon should have nothing to do with DTLS.
we want to build server at local not permission by Information security.
UDP.zip
now the problem looks like a bug in the server？
Could you pls help to confirm leshan bootstrap server online version can record any log if we support the ip address？
thanks！
BRS

now the problem looks like a bug in the server？

As this only happen in your environment, I didn't bet  this is a bug at server side...
Run server locally and capture at server side and maybe you will see packet only once.

we want to build server at local not permission by Information security.

I do not understand.

Could you pls help to confirm leshan bootstrap server online version can record any log if we support the ip address？

I do not understand.

Hi sbernard
as you said now we download leshan-bsserver-demo.jar and run in windows, but always display:
[ERROR] cannot start server endpoint [/113.108.96.XXX:5683]
we use command :java -jar leshan-bsserver-demo.jar -lh 113.108.96.xxx -lp 5683
anything wrong in windows of running leshan-bsserver-demo.jar
did the package fit for windows？

I didn't test it recently (I haven't windows machine) but :

this is pure java so theoretically this should work
I know that by the past some user succeed to launch it.

[ERROR] cannot start server endpoint [/113.108.96.XXX:5683]

This is the only logs you get ?
Eventually you can try to launch it with -v, -vv or -vvv to get more log.

log as below:
Have you ever encountered this problem？
2023-11-30 17:19:08,599 InMemoryMessageExchangeStore [DEBUG] [Bootstrap Server-coap://113.108.96.XXX:5683] using TokenProvider org.eclipse.californium.core.network.RandomTokenGenerator
2023-11-30 17:19:08,613 ban                       [INFO] Started.
2023-11-30 17:19:08,614 CoapEndpoint              [INFO] [Bootstrap Server-coap://113.108.96.XXX:5683] CoapEndpoint uses udp context
2023-11-30 17:19:08,627 BlockwiseLayer            [INFO] [Bootstrap Server-coap://113.108.96.XXX:5683] BlockwiseLayer uses MAX_MESSAGE_SIZE=1024, PREFERRED_BLOCK_SIZE=512, BLOCKWISE_STATUS_LIFETIME=300000, MAX_RESOURCE_BODY_SIZE=8192, BLOCKWISE_STRICT_BLOCK2_OPTION=false
2023-11-30 17:19:08,632 ReliabilityLayer          [TRACE] Max. leisure for multicast server=5000ms
2023-11-30 17:19:08,632 ReliabilityLayer          [TRACE] ReliabilityLayer uses ACK_TIMEOUT=2000ms, MAX_ACK_TIMEOUT=60000ms, ACK_RANDOM_FACTOR=1.5, and ACK_TIMEOUT_SCALE=2.0 as default
2023-11-30 17:19:08,685 CertPathUtil              [DEBUG] certificate: CN=localhost, O=Internet Widgits Pty Ltd, ST=Some-State, C=AU, no extkeyusage!
2023-11-30 17:19:08,686 CertPathUtil              [DEBUG] certificate: CN=localhost, O=Internet Widgits Pty Ltd, ST=Some-State, C=AU, no extkeyusage!
2023-11-30 17:19:08,707 InMemoryReadWriteLockConnectionStore [INFO] Created new InMemoryConnectionStore [capacity: 150000, connection expiration threshold: 1800s]
2023-11-30 17:19:08,710 RandomTokenGenerator      [INFO] using tokens of 8 bytes in length
2023-11-30 17:19:08,710 InMemoryMessageExchangeStore [DEBUG] [Bootstrap Server-coaps://<IP_ADDRESS>:5684] using TokenProvider org.eclipse.californium.core.network.RandomTokenGenerator
2023-11-30 17:19:08,711 CoapEndpoint              [INFO] [Bootstrap Server-coaps://<IP_ADDRESS>:5684] CoapEndpoint uses lwm2m correlation
2023-11-30 17:19:08,711 BlockwiseLayer            [INFO] [Bootstrap Server-coaps://<IP_ADDRESS>:5684] BlockwiseLayer uses MAX_MESSAGE_SIZE=1024, PREFERRED_BLOCK_SIZE=512, BLOCKWISE_STATUS_LIFETIME=300000, MAX_RESOURCE_BODY_SIZE=8192, BLOCKWISE_STRICT_BLOCK2_OPTION=false
2023-11-30 17:19:08,712 ReliabilityLayer          [TRACE] Max. leisure for multicast server=5000ms
2023-11-30 17:19:08,712 ReliabilityLayer          [TRACE] ReliabilityLayer uses ACK_TIMEOUT=2000ms, MAX_ACK_TIMEOUT=60000ms, ACK_RANDOM_FACTOR=1.5, and ACK_TIMEOUT_SCALE=2.0 as default
2023-11-30 17:19:08,913 CoapServer                [INFO] Starting server
2023-11-30 17:19:08,916 ExecutorsUtil             [TRACE] create special thread pool of 8 threads
2023-11-30 17:19:08,917 ExecutorsUtil             [TRACE] create thread pool of 7 threads
2023-11-30 17:19:08,918 ExecutorsUtil             [DEBUG] remove on cancel: true, split: true, log-diff: 10000
2023-11-30 17:19:08,918 ExecutorsUtil             [TRACE] warmup ...
2023-11-30 17:19:08,918 ExecutorsUtil             [TRACE] warmup ...
2023-11-30 17:19:08,919 ExecutorsUtil             [TRACE] warmup ...
2023-11-30 17:19:08,919 CoapEndpoint              [DEBUG] [Bootstrap Server-coap://113.108.96.XXX:5683] Starting endpoint at coap://113.108.96.XXX:5683
2023-11-30 17:19:08,919 ExecutorsUtil             [TRACE] warmup ...
2023-11-30 17:19:08,922 InMemoryMessageExchangeStore [DEBUG] [Bootstrap Server-coap://113.108.96.XXX:5683] no MessageIdProvider set, using default org.eclipse.californium.core.network.InMemoryMessageIdProvider
2023-11-30 17:19:08,927 CoapEndpoint              [DEBUG] [Bootstrap Server-coap://113.108.96.XXX:5683] Endpoint at coap://113.108.96XXX:5683 is already stopped
2023-11-30 17:19:08,927 CoapServer                [ERROR] cannot start server endpoint [/113.108.96.XXX:5683]


[YAML] Remove error wrong value

Problem
It seems like errorWrongValue is unused now. Let's just remove it.
Change overview

Remove errrorWrongValue and the references to it.

Testing
I have regenerated everything and it seems that nothing is changed...

/rebase

What was the purpose of it ?

What was the purpose of it ?

I believe it was for some migration work from Boris to fix the error code in YAML.

What was the purpose of it ?

To handle cases where the SDK was returning the wrong error codes and we didn't want to lose test coverage, so still wanted to test for "is an error" without testing for a specific error.


Update sbt-giter8 to 0.17.0

About this PR
📦 Updates org.foundweekends.giter8:sbt-giter8 from 0.16.2 to 0.17.0
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.foundweekends.giter8", artifactId = "sbt-giter8" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.foundweekends.giter8", artifactId = "sbt-giter8" }
}]

labels: sbt-plugin-update, early-semver-major, semver-spec-minor, commit-count:1

CLA check was fixed in https://github.com/scala/scalatest-example.g8/pull/94.


Compile for ARM-v8.2-a to evaluate FP16 performance on ARM NEON

Hello,
I couldn't compile for arm-v8.2-a
Command:
scons Werror=0 -j8 debug=0 neon=1 opencl=0 os=android arch=arm64-v8.2-a build=cross_compile examples=0 benchmark_tests=1 pmu=1
I get the error that Gcc 6.2.1 or higher is required for arm-v8.2-a.  I tried with multiple linaro gcc-linux-android and gcc-linux-gnu version but all went in vein.
I also cannot find any tutorial or post to compile a program for arm-v8.2-a.

Hi @atrah22
The following command must work well:
PATH=$PATH:/work/local_tools/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/ scons arch=arm64-v8.2-a neon=1 opencl=0 openvx=0 opencv=0 Werror=0 debug=0 validation_tests=1 benchmark_tests=1 debug=0 Werror=0 asserts=1 examples=0 standalone=1 cppthreads=0 openmp=0 -j8
The toolchain version you must use is the one in the command above.

Thankyou for the comment.
However, Shouldn't I put "os=android build=cross_compile" to compile for android platform? My host machine is linux and I want to compile for android platform.
I did compile with your command. However it shows error when run on android platform.

Hi @atrah22
The command in my previous reply was meant only for Linux targets.
To build for android you should follow the instructions in the documentation: https://arm-software.github.io/ComputeLibrary/v17.10/index.xhtml#S3_3_android
What android device are you trying to run the FP16 benchmark tests?. The problem in building with the options 'os=android arch=arm-v8.2-a' is finding an android toolchain that supports FP16. All our work with FP16 has been done in Linux with GCC 6.2.1.


Add the @types/node required for the tests

╰( ͡° ͜ʖ ͡° )つ──☆*:・ﾟ
setTimeout in tests/index.ts needs type definition.

Coverage remained the same at 97.093% when pulling a63342bfc604971a23b4e5f9d7a3a126b5727594 on frooeyzanny:add-@types-node into 9137f899abfb354213335c47baef82f283cfec0e on router-async:master.


Allow role overrides of synced roles

for certain users and/or certain roles. The use case here is if a user doesn't have, e.g., the faculty role in LDAP but we still want them to have the faculty role in Profiles.
Maybe a user setting to not auto-sync roles from LDAP?

Added this as a user setting:


added linuxmint 17.1 rebecca

based on ubuntu trusty
http://www.linuxmint.com/rel_rebecca.php

Duplicate of #406.


More details needed

Is there something that needs to be done on the device to enable/disable this? Or any device running the software will submit to Log Flow?

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

ID: 3b54905c-48c1-06be-2676-c1ca8a9463f2
Version Independent ID: 56586cc1-d598-9f6b-8cda-a3359ed56e4f
Content: Understanding the App Center Log Flow Page - Visual Studio App Center
Content Source: docs/analytics/log-flow.md
Service: vs-appcenter
GitHub Login: @blparr
Microsoft Alias: blparr

@pronouncedJerry no, as long as the App Center SDK is in your app and activated, logs move through the system.


EntityClientService and ServerEntityService should be named consistently

These classes are the analogues of each other, existing on the client and server, respectively.
Their names are slightly different, as they evolved to these points differently, which makes them hard to search for.
We should change ServerEntityService to EntityServerService so that they both have the same shape and one is more obvious to find, starting from the other.

Do this after the creation of a versioning scheme.

@ljacomet, @chrisdennis:  Do you guys agree that this is worth doing or should we just close it and not worry about it?  We are at a relatively painless point to change it but more code will start to depend on this, over time.

I like consistency in APIs and that includes names - so yes from me.

ServerEntityService will be renamed to EntityServerService

We can probably batch this change together in a release with some of the exception changes we were discussing.  Both are fairly light-weight.


[ENH] Make BIDS validator easy to use

Problem: NodeJS is hard to install and maintain and it is not secure
To Do:

[ ] Make a Docker wrapper that pulls and runs BIDS-Validator on a BIDS tree
[ ] ^ but with Singularity
[ ] Copy Tinashe's parsing code from RBC

#26


:robot: Add egress-assess.vm

Automated PR from https://github.com/mandiant/VM-Packages/issues/593 :rocket:

@nos3curity issue with CLA fixed, should we merge this PR?

@nos3curity 👀

tagging @Menn1s and @geo-lit as @skollr34p3r is stepping away from the project :)

VM-Install-From-Github has been replaced byVM-Install-From-Zip in https://github.com/mandiant/VM-Packages/pull/988 @emtuls will fix this PR :smile:

Good to go @Ana06 !


Update apply again call to action content so it works year round

Context
This PR updates the apply again call to action so that candidates are correctly informed of when they can begin to apply again.
If it is before the apply again deadline they are informed they can apply again this academic year.
If it is after the apply again deadline they are informed they can apply again in the next cycle when apply reopens.
Changes proposed in this pull request

Email sent before the apply2 deadline

Email sent after the apply2 deadline

Guidance to review
The dates are off in the emails as it is using the SiteSetting model to set the phase of cycle. This relies on the EOC timetable which sets the dates in a slightly different way to the prod cycle.
If you test it locally it would return for the 2022 cycle.
Link to Trello card
https://trello.com/c/LoQgqf4T/3540-dev-eoc-add-conditional-logic-to-apply-2-calls-to-action-so-that-they-work-all-year-round
Things to check

[x] This code does not rely on migrations in the same Pull Request
[x] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[x] API release notes have been updated if necessary
[x] Required environment variables have been updated added to the Azure KeyVault

(sorry @davidgisbey, my bad), can we remove 'academic' from:
'If now's the right time for you, you can still apply for teacher training this academic year.'
I originally suggested adding 'academic' so that it was consistent with some in-app guidance saying the same thing, but later heard from UR that 'academic' wasn't necessary.

On the second email, 'Email sent after the apply2 deadline', can the date be reformatted?
Currently it says:
You can apply again for courses starting in to 2021 academic year.
But it should show the year range rather than just one year, e.g.:
You can apply again for courses starting in the 2022 to 2023 academic year.
@davidgisbey  mentioned in the PR that the dates are off but wasn't sure whether this problem is covered by that.

Have sorted as discussed 👍

@EmmaFrith
@davidgisbey 's changes have updated the 2nd email with academic year range https://apply-for-te-3540-updat-r7141z.herokuapp.com/rails/mailers/candidate_mailer/application_rejected_all_applications_rejected_after_apply2_deadline . Ok to merge this?

@EmmaFrith
@davidgisbey 's changes have updated the 2nd email with academic year range https://apply-for-te-3540-updat-r7141z.herokuapp.com/rails/mailers/candidate_mailer/application_rejected_all_applications_rejected_after_apply2_deadline . Ok to merge this?

Thanks @malcolmbaig - year range change looks good.


Network.java:38-40: Implement Network methods: inspect,...

The puzzle<PHONE_NUMBER>3 from #210 has to be resolved:
https://github.com/amihaiemil/docker-java-api/blob/970d39ca7e752938d6dd9a387a7eaa1f3027b045/src/main/java/com/amihaiemil/docker/Network.java#L38-L40
The puzzle was created by Boris Kuzmic on 17-Dec-18.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

@amihaiemil please pay attention to this new issue.

@amihaiemil/z please, pay attention to this issue

Job #225 is now in scope, role is DEV

The job #225 assigned to @paulodamaso/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this; there will be no monetary reward for this job

The puzzle<PHONE_NUMBER>3 has disappeared from the source code, that's why I closed this issue. //cc @amihaiemil

The job #225 is now out of scope

Order was finished: +30 point(s) just awarded to @paulodamaso/z


Unable to delete interface if created with invalid InterfaceType via ORM

Environment

Nautobot version (Docker tag too if applicable): 1.5.15b1
Python version: 3.8.16
Database platform, version: PostGRESQL
Middleware(s): Docker

Steps to Reproduce

Create a device in Nautobot
Via ORM, create an interface on the device using a made-up Interface type: ie device.interfaces.get_or_create(name="ethernet1", type="testtype")
The interface creates successfully. Go to the "Interfaces" tab for this device in a web browser
Attempt to delete the newly created interface

Expected Behavior
Either the interface should delete successfully in the UI, or the interface should fail to create with a validation check in the ORM, similar to how creating a Device will fail if a string is passed for "Device Type" instead of a DeviceType object.

Observed Behavior
A KeyError crash occurs as the InterfaceType is invalid.  I am able to delete the interface using the ORM.
I noticed that I get a ValueError if I try to use a random Device Type when creating a device, but this validation does not seem to apply to Interface Types as well.  It may help to add this validation to Interfaces as well.
DeviceType example (assuming all variables are valid Objects)
In [67]: device = Device.objects.create(name="test1", device_role=role, status=status, site=site, device_type="testtype")
[...]
Out[67]: ValueError: Cannot assign "'testtype'": "Device.device_type" must be a "DeviceType" instance.

InterfaceType example:
In [68]: device.interfaces.create(name="ethernet1", type="testtype")
Out[68]: <Interface: ethernet1>

Note: While I cannot delete this interface via UI, I am able to delete it via ORM:
In [69]: device.interfaces.get(name="ethernet1").delete()
Out[69]: (1, {'dcim.Interface': 1})

Traceback
Environment:

Request Method: POST
Request URL: http://<IP_ADDRESS>:8080/dcim/interfaces/26f5904c-dc3c-42ee-bd7a-ca40a177173c/delete/?return_url=/dcim/devices/ed7ff1ce-1d28-41b9-a120-abf5efa34795/interfaces/

Django Version: 3.2.18
Python Version: 3.8.16
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'cacheops',
 'corsheaders',
 'django_filters',
 'django_jinja',
 'django_tables2',
 'django_prometheus',
 'mptt',
 'social_django',
 'taggit',
 'timezone_field',
 'nautobot.core.apps.NautobotConstanceConfig',
 'nautobot.core',
 'django.contrib.admin',
 'django_celery_beat',
 'rest_framework',
 'db_file_storage',
 'nautobot.circuits',
 'nautobot.dcim',
 'nautobot.ipam',
 'nautobot.extras',
 'nautobot.tenancy',
 'nautobot.users',
 'nautobot.utilities',
 'nautobot.virtualization',
 'django_rq',
 'drf_spectacular',
 'drf_spectacular_sidecar',
 'graphene_django',
 'health_check',
 'health_check.storage',
 'django_extensions',
 'constance.backends.database',
 'django_ajax_tables',
 'debug_toolbar',
 'acme.AcmeConfig']
Installed Middleware:
['debug_toolbar.middleware.DebugToolbarMiddleware',
 'django_prometheus.middleware.PrometheusBeforeMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'nautobot.core.middleware.ExceptionHandlingMiddleware',
 'nautobot.core.middleware.RemoteUserMiddleware',
 'nautobot.core.middleware.ExternalAuthMiddleware',
 'nautobot.core.middleware.ObjectChangeMiddleware',
 'django_prometheus.middleware.PrometheusAfterMiddleware']

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/nautobot/utilities/views.py", line 116, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/nautobot/core/views/generic.py", line 545, in post
    obj.delete()
  File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 967, in delete
    return collector.delete()
  File "/usr/local/lib/python3.8/site-packages/django/db/models/deletion.py", line 404, in delete
    signals.pre_delete.send(
  File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send
    return [
  File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/usr/local/lib/python3.8/site-packages/nautobot/utilities/utils.py", line 464, in _curried
    return _curried_func(*args, *moreargs, **{**kwargs, **morekwargs})
  File "/usr/local/lib/python3.8/site-packages/nautobot/extras/signals.py", line 118, in _handle_deleted_object
    objectchange = instance.to_objectchange(ObjectChangeActionChoices.ACTION_DELETE)
  File "/usr/local/lib/python3.8/site-packages/nautobot/dcim/models/device_components.py", line 89, in to_objectchange
    return super().to_objectchange(action, related_object=device, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/nautobot/extras/models/change_logging.py", line 44, in to_objectchange
    object_data_v2=serialize_object_v2(self),
  File "/usr/local/lib/python3.8/site-packages/nautobot/utilities/utils.py", line 242, in serialize_object_v2
    data = serializer_class(obj, context={"request": None}).data
  File "/usr/local/lib/python3.8/site-packages/rest_framework/serializers.py", line 555, in data
    ret = super().data
  File "/usr/local/lib/python3.8/site-packages/rest_framework/serializers.py", line 253, in data
    self._data = self.to_representation(self.instance)
  File "/usr/local/lib/python3.8/site-packages/rest_framework/serializers.py", line 522, in to_representation
    ret[field.field_name] = field.to_representation(attribute)
  File "/usr/local/lib/python3.8/site-packages/nautobot/core/api/fields.py", line 46, in to_representation
    return OrderedDict([("value", obj), ("label", self._choices[obj])])

Exception Type: KeyError at /dcim/interfaces/26f5904c-dc3c-42ee-bd7a-ca40a177173c/delete/
Exception Value: 'testtype'

@glennmatthews i see you marked as a bug, but does get_or_create call clean/full_clean?

get_or_create does not call clean methods, no. The data being created is clearly invalid, I marked it for now as a bug because IMO the change-logging code should be able to more gracefully handle the case where an object being change-logged contains invalid data.

2. Via ORM, create an interface on the device using a made-up Interface type: ie `device.interfaces.get_or_create(name="ethernet1", type="testtype")`

To be clear, this is "permitted" because an interface type is just a CharField at the database level, so the DB doesn't prevent it, and using get_or_create creates it directly in the DB without performing Python-side cleaning logic. Calling clean() or full_clean() on the instance before saving it to the DB will result in this being rejected as invalid.

Either the interface should delete successfully in the UI, or the interface should fail to create with a validation check in the ORM, similar to how creating a Device will fail if a string is passed for "Device Type" instead of a DeviceType object.

Not an apples-to-apples comparison - a DeviceType is a DB record, so passing something that isn't a DB record can be detected by the database and rejected automatically. An interface type is just a string of characters as far as the DB is concerned and the list of valid choices for this field is enforced by Python, not by the DB.

@glennmatthews If it helps any, I have a branch that successfully adds validation.  I just haven't finished fully testing it yet.
https://github.com/matt852/nautobot/commit/cecdc9661e58a96c85619cb2b8640330397a4141


sort_commits doesn't work but --sort does

Describe the bug
I want my commits to be sorted by the newest time. However, it does not work using sort_commits = "newest" but it works using --sort newest
To Reproduce
Steps to reproduce the behavior:

git clone https://github.com/orhun/git-cliff
cd git-cliff
git-cliff --config config/cliff.toml --tag 0.1.0-beta.3

change sort_commits = "oldest" to sort_commits = "newest" in /git-cliff/config/cliff.toml
the run the same command git-cliff --config config/cliff.toml --tag 0.1.0-beta.3

The order is same. no chages

Now, remove the sort_commits = "newest" line the config.
run  git-cliff --config config/cliff.toml --tag 0.1.0-beta.3 --sort newest and  git-cliff --config config/cliff.toml --tag 0.1.0-beta.3 --sort oldest. Now it works.
Got the error?

Expected behavior
sort_commits = "newest" should output the same exact thing as --sort newest
Screenshots/Logs
Attached.
System (please complete the following information):
❯ git-cliff --version
git-cliff 0.4.2, version: https://github.com/orhun/git-cliff/commit/02a6187a58583f27e4604d7ea518b52b4bc7a833

OS: Debian GNU/Linux 11 (bullseye)
Kernel: Linux 5.10.0-9-amd64 x86_64

Additional context
Thanks for git-cliff.

I did cargo install git-ciff -f, but the issue still there.
I cant make sure since we don't have a git hash in our --version

I did cargo install git-ciff -f, but the issue still there.

cargo install does not pull the latest revision from git. You can build from source or use docker images to try it out until a new version is published.

Oh, OK.
Now runni ./target/release/git-cliff  --config config/cliff.toml --tag 0.1.0-beta.3 solves the issue.
Thanks a lot for git-cilff, Orhun.


Disable public memos

Is your feature request related to a problem?
It seems like even though 'public messages' is disabled, any previous public messages are still visible. (this might be the correct way to do it. I'm not sure.)
But the real issue I am facing is that there are only 2 options for post visibility
Describe the solution you'd like
I would have thought that after disabling public messages that previous messages would no longer be public.
As for the real issue, there are 3 types of posts, Private/Member/Public
But the option available disables everyone's ability to post. The admin account can only post to all members, and users can only post private. So my only option is to leave public messages on if I want to allow my users to store both member visible and private messages. It seems like disabling public posts does more than it should.
Option: Disable Public Posts (This should mean anyone can post private or member messages, previous public posts are no longer visible unless logged in.
Option: Enable member messages (This option is only available if public posts is disabled) Enabling this allows the admin and all users to post both member and private messages....
If keeping the admin account to only members, this wouldn't be an issue as I can then create a personal account for myself and only use the admin account for administrative messages.
Additional context
No response

Disable Public Memos will prevent regular users from saving public memos, but allow administrators to do so.


Can it support dynamic (runtime jvm) changes to the ReadFrom strategy

I want to modify the ReadFrom strategy without restarting the application.

ReadFrom can be set on the Cluster or Master/Replica connection.

This setting will only take effect when init connection, not when the redis command is issued

I want to dynamically determine the strategy when I initiate a command

ReadFrom affects commands that qualify for replica reads only, commands cannot be accessed in ReadFrom.


Fix invalid "ls -G" alias.

Looks like you need to rebase now...

@reduardo7 what does this solve? What's your setup? (platform, operating system, installed ls's...)

@mcornella this solve a problem with ZSH in Termux (https://play.google.com/store/apps/details?id=com.termux). You can try install it and configure with ZSH + oh-my-zsh. When you type ll, results in an error.

Causes problems for other users #5604


readme improvements

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 99.27%. Comparing base (231ae5d) to head (d3792ae).
Report is 15 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #70   +/-   ##
=======================================
  Coverage   99.27%   99.27%
=======================================
  Files           1        1
  Lines         276      276
  Branches       65       65
=======================================
  Hits          274      274
  Misses          1        1
  Partials        1        1

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


Make library compatible with module systems

Candidates: Node.js/CommonJS, AMD, Closure, ES6. Is it possible to support more than one?

:+1: for npm.


About Amazon2m dataset

Hi,
We just release the script/data for generating Amazon2M.
Please download it here, in which you can see how this data set is processed from the raw metadata.

Hello, the amazon 3M data on this website doesn't include metadata.json. It's not in both "BoW Features" and "Raw text"
Originally posted by @abcbdf in https://github.com/google-research/google-research/issues/69#issuecomment-605705200

Hi, I was also looking for the metadata.json and the file formats specified in the given code. Was anyone able to run the gcn for amazon-2m

@aqeebiarka , where you able to get the Amazon-2m Dataset?


Port test/test_transforms.py to pytest

Currently, most tests in test/test_transforms.py rely on unittest.TestCase. Now that we support pytest, we want to remove the use of the unittest module.
For a similar issue see https://github.com/pytorch/vision/issues/3951
Instructions
There are many tests in this file, so I bundled them in multiple related groups below. If you're interested in working on this issue, please comment below with "I'm working on <group X>, <group Y>, etc..." so that others don't pick the same tests as you do. Feel free to pick as many groups as you wish, but please don't submit more than 2 groups per PR in order to keep the reviews manageable. Before picking a group, make sure it wasn't picked by another contributor first. Thanks!!
How to port a test to pytest
Porting a test from unittest to pytest is usually fairly straightforward. For a typical example, see https://github.com/pytorch/vision/pull/3907/files:

take the test method out of the  Tester(unittest.TestCase) class and just declare it as a function
Replace @unittest.skipIf with pytest.mark.skipif(cond, reason=...)
remove any use of self.assertXYZ.

Typically assertEqual(a, b) can be replaced by assert a == b when a and b are pure python objects (scalars, tuples, lists), and otherwise we can rely on assert_equal which is already used in the file.
self.assertRaises should be replaced with the pytest.raises(Exp, match=...): context manager, as done in https://github.com/pytorch/vision/pull/3907/files. Same for warnings with pytest.warns
self.assertTrue should be replaced with a plain assert

When a function uses for loops to tests multiple parameter values, one should usepytest.mark.parametrize instead, as done e.g. in https://github.com/pytorch/vision/pull/3907/files.
It may make sense to keep related tests within a single class. For example here, the tests in group A could be grouped into a TestToPILImage class, the tests in group N could be in TestPad, etc. Not all groups need a dedicated class though, it's on a case-by-case basis.

CC @ShrillShrestha and @zhiqwang in case you're interested in this too :)

Groups:

[ ] Groups A:

test_1_channel_ndarray_to_pil_image
test_1_channel_tensor_to_pil_image
test_2_channel_ndarray_to_pil_image
test_2_channel_tensor_to_pil_image
test_2d_ndarray_to_pil_image
test_2d_tensor_to_pil_image
test_3_channel_ndarray_to_pil_image
test_3_channel_tensor_to_pil_image
test_4_channel_ndarray_to_pil_image
test_4_channel_tensor_to_pil_image
test_ndarray_bad_types_to_pil_image
test_tensor_bad_types_to_pil_image

[ ] Group B

test_accimage_crop
test_accimage_pil_to_tensor
test_accimage_resize
test_accimage_to_tensor

[ ] Group C

test_affine
test_random_affine

[ ] Group D

test_autoaugment
test_center_crop
test_center_crop_2
test_color_jitter

[ ] Group E

test_convert_image_dtype_float_to_float
test_convert_image_dtype_float_to_int
test_convert_image_dtype_int_to_float
test_convert_image_dtype_int_to_int
test_convert_image_dtype_int_to_int_consistency

[ ] Group F

test_pil_to_tensor
test_to_tensor
test_to_tensor_with_other_default_dtypes

[ ] Group G

test_five_crop
test_ten_crop
test_max_value
test_linear_transformation

[ ] Group H

test_random_apply
test_random_choice
test_random_order

[ ] Group I

test_random_crop
test_random_erasing
test_random_rotation
test_randomperspective
test_randomperspective_fill

[ ] Group J

test_randomresized_params
test_resize

[ ] Group K

test_rotate
test_rotate_fill
test_gaussian_blur_asserts
test_lambda

[ ] Group L

test_random_horizontal_flip
test_random_vertical_flip
test_normalize
test_normalize_3d_tensor
test_normalize_different_dtype

[ ] Group M

test_to_grayscale
test_random_grayscale

[ ] Group N

test_pad
test_pad_raises_with_invalid_pad_sequence_len
test_pad_with_mode_F_images
test_pad_with_non_constant_padding_modes
test_pad_with_tuple_of_pad_values

[ ] Group O

test_random_invert
test_random_posterize
test_random_solarize
test_random_adjust_sharpness
test_random_autocontrast
test_random_equalize

[x] Group P

test_adjust_brightness
test_adjust_contrast
test_adjust_gamma
test_adjust_hue
test_adjust_saturation
test_adjust_sharpness
test_adjusts_L_mode

cc @pmeier

I am working on group P.
I'll try to send PR soon. :)

Thanks for mentioning @NicolasHug. I will try working on Group O.

Thanks for mentioning @NicolasHug :) I will try working on Group A.

Hi @NicolasHug, I'd like to work on Group I and J.
I'll try to send a PR soon!

@NicolasHug I can help review. Just ping me.

hi @NicolasHug, I'll try working on Group N

Hey @NicolasHug, I will try working on Group F.

Hi @NicolasHug, I will try working on Group K.

Hi @NicolasHug, I will try working on Group E.

For b,c,d,g groups i will raise PR

Thanks @harishsdev! please make sure to submit at most 2 groups per PR to keep the review  manageable :)

Hi @NicolasHug, I will try working on Group M.

@NicolasHug  in function test_rotate_fill Do I need to parameterize any variable as there are 2 for loops but 1 is dependent on the other. Please guide.

Ah, I wish we could have covariant parametrization! This is a common struggle.
In the case of test_rotate_fill parametrizing only over modes should be good enough!

Seems like most groups have been taken already, thanks everyone for your interest! I've created another similar issue for those who are interested: https://github.com/pytorch/vision/issues/3956

@NicolasHug but 2nd for loop requires list of nums_bands which depends upon modes list. So we have to define modes list inside the function even if we do parametrization. So is that okay?

Ah I missed that.
If I understand the logic correctly here, we should be able to remove this last for loop and just hardcode wrong_num_bands to num_bands + 1.
Basically, set(nums_bands) - {num_bands} is always 1 when num_bands is 3 and always 3 when num_bands is 1.
What's important is that wrong_num_bands is different from num_bands, I don't think we really care about the exact value.

PR Raised for
Group B
test_accimage_crop
test_accimage_pil_to_tensor
test_accimage_resize
test_accimage_to_tensor
Group C
test_affine
test_random_affine

Hi, @NicolasHug  I'd like to work on Group H.
I'll try to send a PR soon!!

Hi, @NicolasHug  I'd like to work on Group L.
I'll try to send a PR soon!!

Hi all,I am working only on Group G,Group D
please take initiate to raise PR for Group B,Group C

@harishsdev no worries, I can send in a PR if you are not working on them anymore.

Hi @AnirudhDagar are you working on both B and C? I can help with one.

Sure @Ishan-Kumar2! I was about to start with B, but let me know the one you prefer. I'll take the other. :))

Okay @AnirudhDagar you can continue with B, I'll try C.

All done! Thank you so much everyone for your help!!


Tag 3.8.5 won't publish posts with 2020 as the year?

[ ] I tried updating to the latest version

[ ] I can't, there is an issue
[X ] This is about an < latest

[X ] I understand older versions may be unsupported

[ ] I Am on Windows

[ ] Ubuntu Bash on Windows
[ ] Fedora Bash on Windows
[ ] Other  Bash on Windows

[X ] I Am on Linux

[ ] Ubuntu
[ ] Fedora
[X ] CentOS
[ ] Redhat
[ ] Debian

[ ] I am on macOS 10.13
[ ] I am on macOS 10.14
[ ] I'm on Docker

[ ] I understand Docker may be unsupported

Description
So, I'm sorry if this is a bit vague, but I've been using this container (tag 3.8.5) to replicate the version that Github Pages uses to generate my site.  I'm able to generate posts and drafts without any trouble.  However, if I generate any post or draft with the year 2020, it does not appear in the _site output content.  Changing the year to 2019 results in the post or draft appearing as expected.
What's interesting is that the exact same content (ie, from a git pull) when published to Github Pages itself will generate the posts with the year 2020.

Steps
A commit ID that demonstrates the issue can be found here;
https://github.com/jmyoung/jmyoung.github.io/tree/7175d3f38e858500c8ed4bbd1c782d47dca7e5d1
The one post that is in 2020 does not render with the container, but it does render on Github Pages (which theoretically uses 3.8.5 too).  I suspect this may be a manifestation of the 2020 windowing bug, possibly with the Ruby 2.6.3p62 in use with the container.
Output
Output should contain posts from 2020, it does not.
Expected

Ruby is at 2.7 now!


Problem with having two ampersands in a string

Currently on the first ampersand is escaped, but all of the ampersands should be escaped

This should fix the issue
https://github.com/gogo/letmegrpc/commit/244cef344dd498b88e751aae2353e28269020764


Anticheat

impostor server anticheat bans sheriff when he kills for hacking

please read this

please read this

Closing as the "issue" was resolved.

Closing as the "issue" was resolved.


WIP:  Enable SHA256 Hashing of Promenade Generated Files

This PR is a work in progress to address the need for host validation of files generated by Promenade.  This initial takes a SHA256 hash of all promenade generated files and writes them to /var/log/promenade/promenade_file_hash.log -- Next step will be running validation calls to ensure the files have not changed.

Closing as we have moved to gerrithub.


Verify button

I just noticed a new "verify" button on the solutions page, under each solution. First of all, the tooltip says "moderator feature", and I'm not aware of being a moderator. Then, when I press it I get an error:

Well, those buttons shouldn't even show for you, so it makes sense that it doesn't work. Not sure why it shows up though.

There used to be an issue that unauthorized users were able to see actions which should be available only to moderators, I will try to find it and reopen it.

Same thing happens to me every once in a while.

is that still happening.

is that still happening.

No, I haven't seen this ever since.


only drawing boxes around identified faces of certain size

What's the best way in the python demo for only drawing boxes around identified faces of certain size? Size could be absolute width or width as percent of the input frame width?

I don't think there currently is a way to do this, but it should be pretty easy to add if you need it. The simplest way would probably be to add a condition to draw_detections in face_recognition_demo.py.

Closing due to inactivity.


Wrote tests for lib/configurations files

Issue_20

check and compare gpu_emboss_ test.dart and gpu_emboss.dart
these files were created separately: gpu_lookup_test.dart and gpu_square_lookup_test.dart


Can't use multiple rooms

Due to changes in how Groupme's bot API works, bots can only be assigned to a single room
The solution here may be to use a mapping of rooms to bot API keys

Have you given this another look recently? I'm writing a bot which needs multiple rooms, and I wasn't sure how best to implement these features into your hubot adapter.

Unfortunately I haven't
Some futher thoughts on implementation though:
Because of the way that groupme bots work, every room has to have a separate bot
And every bot has a separate ID and token
So the config for this will have to become some sort of map of IDs to tokens
And then the adapter could map over the token & id cominations


Add Isolasi Mandiri Page

Closes #330
Description
Currently, I just did a rough layouting for isoman page based on this Figma design.
The data list is still declared inside the page file.
The external link is working.

I think I need to wait for Page, PageHeader, and PageContent design updates.
Hi Mas @zainfathoni, @resir014  I have several questions to complete this PR.

Does the breadcrumbs still used in the new design?
For the link list,  does it take from the markdown file inside _content/home-page.md?  Sorry, I'm not quite familiar with the markdown to react component conversion. Could you share how to do it?

Current Tasks
This is the next thing that

[x] layouting for isoman page
[x] separating link list to StackedList component
[ ] separating isoman link list content from home-page.md to isoman.md
[ ] render link list on the isoman.md to StackedList
[ ] any suggestions (?)

Are the breadcrumbs still used in the new design?

Yes, I think we should keep using it so the users know where exactly they are on the website. What do you think, @resir014?

For the link list, does it take from the markdown file inside _content/home-page.md? Sorry, I'm not quite familiar with the markdown to react component conversion. Could you share how to do it?

Yes, we need to get the content from somewhere under the _content directory. However, in this case, I don't think Markdown is a good format. In this case, I think we should use a YAML file instead.
You can use Netlify CMS' List widget to manage the list of the links.
Regarding how to connect the YAML file into the Netlify CMS, you can refer to our config.yml file as an example. Please pass me down your email address so you can try logging in to the CMS using Netlify Identity.

Regarding how to connect the YAML file into the Netlify CMS, you can refer to our config.yml file as an example. Please pass me down your email address so you can try logging in to the CMS using Netlify Identity.

Sure<EMAIL_ADDRESS>

Sure<EMAIL_ADDRESS>
Invitation sent.
Please refer to these videos to learn how to sign up and to get familiar with it.

Yes, I think we should keep using it so the users know where exactly they are on the website. What do you think, @resir014?

@zainfathoni yes, let's keep the breadcrumbs

Invitation sent.
Please refer to these videos to learn how to sign up and to get familiar with it.

Accepted, thank you. It's only run in production right?
Sorry, I want to clarify the next steps.
After this, I need to

[ ] store the isoman contents inside _content folder. I saw you guys store site config data inside the site_config.json file. Is that okay for me to following that?
[ ] add a file collection to config.yml refer to isoman content file and add a field with list widgets
[ ] wait for merging (?)
[ ] drafting, check and review the result on NetlifyCMS -> publish

Any missing steps?

Accepted, thank you. It's only run in production right?

No, please read this document.

Note: No matter where you access Netlify CMS — whether running locally, in a staging environment, or in your published  site — it always fetches and commits files in your hosted repository (for example, on GitHub), on the branch you configured in your Netlify CMS config.yml file. This means that content fetched in the admin UI matches the content in the repository, which may be different from your locally running site. It also means that content saved using the admin UI saves directly to the hosted repository, even if you're running the UI locally or in staging.

Sorry, I want to clarify the next steps.
After this, I need to

[ ]  store the isoman contents inside _content folder. I saw you guys store site config data inside the site_config.json file. Is that okay for me to following that?
[ ]  add a file collection to config.yml refer to isoman content file and add a field with list widgets
[ ]  wait for merging (?)
[ ]  drafting, check and review the result on NetlifyCMS -> publish

Any missing steps?

No, I don't think so. Please proceed with those steps above.

@syauqy One more thing: change the page slug from /isoman to /isolasi-mandiri for better SEO.

@syauqy One more thing: change the page slug from /isoman to /isolasi-mandiri for better SEO.

ah okay, changed. Thank you for the suggestion 🙇♂

@all-contributors please add @syauqy for code.


Add normalizing of user user object in getClientInitializeResponse

The getClientInitializeResponse function of the statsig-node SDK actually doesn’t evaluate the environment tier value,  doing some debugging it was found that it isn't setting that value it is getting undefined when trying to evaluate it and by conclusion a false boolean in the result.
There is already a function called normalizeUser for setting the environment to the user so just using this one the problem can be solved.
I hope this explanation can help to speed up a new release with the adjustment.
Currently:
StatsigServer.getClientInitializeResponse -> Evaluator.getClientInitializeResponse -> eval -> evalRule -> evalCondition -> getFromEnvironment -> undefined statsigEnvironment
Solution:
StatsigServer.getClientInitializeResponse -> normalizeUser -> Evaluator.getClientInitializeResponse -> eval -> evalRule -> evalCondition -> getFromEnvironment -> existing statsigEnvironment

We've decided to move forward with this behavior, but only if the user passed in does not have statsigEnvironment on it, in order to support a likely rare case where the environment on the client does not match the environment on the server.
Ill commit this separately - thanks for bringing this to our attention!


Odd panel config

I just got another set of 1/8 scan 32x32 panels from China and the're even weirder than the first set I got. I've poked at the lib trying to find settings that will make it work right, but I figured I'd ask. Do we have settings that can handle this kind of pattern: https://photos.app.goo.gl/kzqTATvhVoxiHZGy9 ?

I think my 32x32 panel is doing the same:
https://photos.app.goo.gl/gFottGJd43rvuzQA8
I bought mine from Sparkfun, if that helps.

Yours is doing something different from mine, but still weird and probably currently unsupported.

@shodan45 Alright, I have some code to test tomorrow which should contain the solutions for both our panel setup issues. I'll let you know once I've verified it works for mine.

@shodan45 when you get a chance, could you test against my fork with setScanPattern(VZAG) ? https://github.com/opticron/PxMatrix

@shodan45 I just pushed another commit, pull it and give it a try. Happy to help, these height/pattern=4 panels are getting pretty damn weird.

That almost did it. I thought all that was needed was to fix the "y chunks" problem, but the X axis isn't right either. It seems to be mapping to 16-31, then 0-15.
     display.drawPixel(0, 0, myRED);       display.drawPixel(16, 0, myYELLOW);       display.drawPixel(31, 0, myGREEN); gives:

I stuck a quick hack of x -= 16; if (x < 0) x += 32; in there, and that fixed it, but I'm sure that's not the best way to fix it.

Alright, I'll update my branch and the PR today with the right values.

Odd, that didn't seem to do anything... I double checked that I have the latest version, and I do. It's still doing the 16-31, 0-15 thing on the X axis.

Alright, well I just inverted the X blocks again on my branch just for good measure. Hopefully that gets it done. Last time I simplified some code in the process and may have ended up inverting things twice.

That seems to have fixed it! Thank you!!


#190 Renaming downloaded YouTube videos

Feature added to name the YouTube video to be downloaded

@SaptarshiSarkar12, will the Drafty_CLI.exe file have to be updated?

@SaptarshiSarkar12, will the Drafty_CLI.exe file have to be updated?

No, I would build the executable in my local computer and then, would publish it as an asset of the next release. @varad64


[Typescript] How to allow a Styled component (within a React component) to accept a CSSObject or TemplateStringsArray?

Hi!
I know the title doesn't really make sense; sorry about that.
In short, I have a regular React component that will return a Styled Component.
Something along these lines.
import React from 'react';
import styled, { CSSObject } from 'styled-components';

interface MyProps {
    children: JSX.Element | JSX.Elements[];
    style: CSSObject | string | null;
}

export const MyComponent: React.FunctionComponent<MyProps & React.HTMLAttributes<{}>> = ({children, style=null, ...htmlProps}) => {

    let MyDiv: WhatKindOfTypeDoIPutHere = styled.div;

    if (typeof style === object) {
        MyDiv = MyDiv(style);
    }
    else {
        MyDiv = MyDiv`${style ? style : ""}`;
    }

    return <MyDiv>{children}</MyDiv>;
}

I cannot figure out two things.

What type do I set on line 12 that would allow my variable to be an instance of styled.div?

Or, how do I allow styled.div to accept either a CSSObject, OR a string? I've tried setting

style: CSSObject | string as TemplateStringsArray | null; but that doesn't seem to work.
Any ideas?

Please post this in a relevant help forum, not our bug tracker. Thanks!
On Thu, Oct 3, 2019 at 11:09 AM dillonwork<EMAIL_ADDRESS>wrote:

Hi!
I know the title doesn't really make sense; sorry about that.
In short, I have a regular React component that will return a Styled
Component.
Something along these lines.
import React from 'react';
import styled, { CSSObject } from 'styled-components';
interface MyProps {
children: JSX.Element | JSX.Elements[];
style: CSSObject | string | null;
}
export const MyComponent: React.FunctionComponent<MyProps & React.HTMLAttributes<{}>> = ({children, style=null, ...htmlProps}) => {
let MyDiv: WhatKindOfTypeDoIPutHere = styled.div;

if (typeof style === object) {
    MyDiv = MyDiv(style);
}
else {
    MyDiv = MyDiv`${style ? style : ""}`;
}

return <MyDiv>{children}</MyDiv>;

}
I cannot figure out two things.

What type do I set on line 12 that would allow my variable to be an
instance of styled.div?
2.
Or, how do I allow styled.div to accept either a CSSObject, OR a
string? I've tried setting
style: CSSObject | string as TemplateStringsArray | null; but that
doesn't seem to work.
Any ideas?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/styled-components/styled-components/issues/2781?email_source=notifications&email_token=AAELFVUDGN3RZJFU5572PBTQMYDJXA5CNFSM4I5ENFZ2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPN246A,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAELFVXWZSOPGX5CLDBCUYLQMYDJXANCNFSM4I5ENFZQ
.

Please post this in a relevant help forum, not our bug tracker. Thanks!
…
On Thu, Oct 3, 2019 at 11:09 AM dillonwork @.***> wrote: Hi! I know the title doesn't really make sense; sorry about that. In short, I have a regular React component that will return a Styled Component. Something along these lines. import React from 'react'; import styled, { CSSObject } from 'styled-components'; interface MyProps { children: JSX.Element | JSX.Elements[]; style: CSSObject | string | null; } export const MyComponent: React.FunctionComponent<MyProps & React.HTMLAttributes<{}>> = ({children, style=null, ...htmlProps}) => { let MyDiv: WhatKindOfTypeDoIPutHere = styled.div; if (typeof style === object) { MyDiv = MyDiv(style); } else { MyDiv = MyDiv${style ? style : ""}; } return {children}; } I cannot figure out two things. 1. What type do I set on line 12 that would allow my variable to be an instance of styled.div? 2. Or, how do I allow styled.div to accept either a CSSObject, OR a string? I've tried setting style: CSSObject | string as TemplateStringsArray | null; but that doesn't seem to work. Any ideas? — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#2781?email_source=notifications&email_token=AAELFVUDGN3RZJFU5572PBTQMYDJXA5CNFSM4I5ENFZ2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPN246A>, or mute the thread https://github.com/notifications/unsubscribe-auth/AAELFVXWZSOPGX5CLDBCUYLQMYDJXANCNFSM4I5ENFZQ .

Apologies - I saw there was a Label for "Questions" so I wrongly assumed I'd be okay to post here.
Do you know of a place dedicated to Styled specifically?

Stack overflow, spectrum chat, or definitelytyped would all be good choices
On Thu, Oct 3, 2019 at 11:11 AM dillonwork<EMAIL_ADDRESS>wrote:

Please post this in a relevant help forum, not our bug tracker. Thanks!
… <#m_-857235002325024116_>
On Thu, Oct 3, 2019 at 11:09 AM dillonwork @.***> wrote: Hi! I know the
title doesn't really make sense; sorry about that. In short, I have a
regular React component that will return a Styled Component. Something
along these lines. import React from 'react'; import styled, { CSSObject }
from 'styled-components'; interface MyProps { children: JSX.Element |
JSX.Elements[]; style: CSSObject | string | null; } export const
MyComponent: React.FunctionComponent<MyProps & React.HTMLAttributes<{}>> =
({children, style=null, ...htmlProps}) => { let MyDiv:
WhatKindOfTypeDoIPutHere = styled.div; if (typeof style === object) { MyDiv
= MyDiv(style); } else { MyDiv = MyDiv${style ? style : ""}; } return
{children}; } I cannot figure out two things. 1. What type do I set on line
12 that would allow my variable to be an instance of styled.div? 2. Or, how
do I allow styled.div to accept either a CSSObject, OR a string? I've tried
setting style: CSSObject | string as TemplateStringsArray | null; but that
doesn't seem to work. Any ideas? — You are receiving this because you are
subscribed to this thread. Reply to this email directly, view it on GitHub <
#2781 https://github.com/styled-components/styled-components/issues/2781?email_source=notifications&email_token=AAELFVUDGN3RZJFU5572PBTQMYDJXA5CNFSM4I5ENFZ2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPN246A>,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAELFVXWZSOPGX5CLDBCUYLQMYDJXANCNFSM4I5ENFZQ
.
Apologies - I saw there was a Label for "Questions" so I wrongly assumed
I'd be okay to post here.
Do you know of a place dedicated to Styled specifically?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/styled-components/styled-components/issues/2781?email_source=notifications&email_token=AAELFVS4XDSWHGVTK7NJDIDQMYDTJA5CNFSM4I5ENFZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAIQ6AA#issuecomment-537988864,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAELFVWYVQARTJENRQBVLZ3QMYDTJANCNFSM4I5ENFZQ
.


Feature/gmp minor improvements

Minor improvements to the gmp.hpp file

Replaced some successions of functions by combined functions
Remove repetitions in the code by precomputing additional constants (shift_modulus_shoup)
Consistency (i -> cm)
Careful computations of mph_init2()
Use of mpz_inits() and mpz_clears()

ok with me

These are minor changes, I merge the PR.


Add Ethereum address to FUNDING.yml

I'd like to see an Ethereum address added to the custom property of the FUNDING.yml file for GitHub Sponsors. This would allow a canonical address to send funds to. For example, I'm building a project that allows developers to setup one recurring donation that is split between all of their dependencies with an Ethereum address: https://sustainus.io

No comment on why this was closed?

Sorry, forgot to comment - I've no interest in receiving payments in this form.

Sounds good, thank you


Remove Python sample code

We've had the official Python clientlib out for a while now and it's in the readme. Let's remove the sample so people opt for the clientlib.
ref: #81

@tomelm the files changed don't actually mention the remove of the v2/python directory, did you do that github just doesn't visualize that correctly?
Otherwise :ship: :shipit:

@watterso correct:
yelp-api|remove-python-sample ⇒ ls v2
csharp      haskell     java        objective-c perl        php         r           rust

:ship: :shipit: !

:shipit:

Looks like we've got a link from https://www.yelp.com/developers/documentation/v2/examples we should remove.
Rolled back until we update that...


Firefox linux support

Updated a couple of shortcuts as per https://support.mozilla.org/en-US/kb/keyboard-shortcuts-perform-firefox-tasks-quickly I think they apply to Windows as well

These few shortcuts actually appear to be different. :'(
I think we'd probably be better offer creating a linux-specific version.

The one time I don't test it on Windows! No problem, I'll close this and make a new branch so the fit history looks nice


index: export our types

"Wait. Shouldn't we just export our types if we want to export our types?"

Unnoted change here where we bump zod because there's a peer dependency conflict due to zod-to-json-schema. They need to be at parity, I think.

create repo does in fact still work given this change (in my env). We're failing the test here because it can't find Chrome. Do we still install it during Puppeteer install?


Windows Storage Server 2003 support

Windows Storage Server 2003 is an obscure version of SS2003, it was mainly seen on Dell PowerEdge systems, and eventually became lost, I found a copy of it today and uploaded it to the internet archive, but Legacy Update does not properly support this version. It detects the OS as Windows XP Professional x64 Edition SP2, and only shows Server 2003 updates up to 07-2015, Storage Server 2003 was supported until 10-2016 according to Microsoft https://learn.microsoft.com/en-us/lifecycle/products/windows-storage-server-2003.

That's interesting because what you're seeing is what Microsoft themselves are returning from the official Windows Update servers. Legacy Update only proxies it to make sure you can access it again.
If you're on Legacy Update 1.9 or 1.8, the name you see is coming directly from the OS. Otherwise, it's a bunch of logic I wrote to make the best guess as to the brand name. The name displayed doesn't really matter, it's just cosmetic, but it's interesting that it's wrong. You can check yourself what the OS reports with wmic os get caption in cmd.
If you have the time to do so, it would be interesting to see if Windows Server Update Services (WSUS) on a recent Windows Server install finds any updates beyond 2015-07 for Storage Server 2003. If not, maybe Microsoft cut it off early, or those updates were only available for manual install for some reason? Also possible you need to install those updates for the remainder of them to appear.

That's interesting because what you're seeing is what Microsoft themselves are returning from the official Windows Update servers. Legacy Update only proxies it to make sure you can access it again.
If you're on Legacy Update 1.9 or 1.8, the name you see is coming directly from the OS. Otherwise, it's a bunch of logic I wrote to make the best guess as to the brand name. The name displayed doesn't really matter, it's just cosmetic, but it's interesting that it's wrong. You can check yourself what the OS reports with wmic os get caption in cmd.
If you have the time to do so, it would be interesting to see if Windows Server Update Services (WSUS) on a recent Windows Server install finds any updates beyond 2015-07 for Storage Server 2003. If not, maybe Microsoft cut it off early, or those updates were only available for manual install for some reason? Also possible you need to install those updates for the remainder of them to appear.

How would I set up WSUS to check?

I finally got around to testing this.
"Microsoft(R) Windows(R) Server 2003 Enterprise x64 Edition" is what the OS identifies itself as from WMI. You can also see it on the desktop if you enable the desktop watermark. @TheOneGoofAli also noticed it identifies as Enterprise x64 Edition to WSUS.

Storage Server branding comes from wssbrand.dll - this is interesting because it seems like an early attempt at the centralised branding system implemented in Vista, or at least a replica of the same concept. Aside from the OS name string, it also contains the boot logo, logon/winver banner, and classic Start menu banner. Of course, that said, anything that isn't designed to look for that dll will still think it's Enterprise x64.
I wasn't able to find any updates past 2015-07-14, nor could Ali couldn't find any on WSUS. So the answer could be either:

The support lifecycle site is wrong, and it really ended the same day as regular Server 2003.
It was indeed supported, but updates were released privately. (Which still means the support lifecycle is wrong, because it's not supposed to count updates released under support contracts.)

I'll implement having the product name logic detect Storage Server in 1.10.1, but I don't know if there's a good answer for what happened to Storage Server beyond June 2015. Have you seen any updates beyond that date lingering out there, by any chance? (Feel free to DM me on Discord if you have anything you want to share.)


Update sql-data-warehouse-get-started-connect-query.md

Add link to load sample data.

Hi @lodipalm, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

@JennieHubbard
Jennie, please review this PR and let me know if I should merge. Thanks.

@barbkess
FYI

I am going to approve this but please fix the following:
Next Steps appears to as a heading with nothing under it - rather cryptic. :)


Support for read_csr(), immediate and rs2 value error issue resolved, mstatush issue resolved

Support for read_csr()
It can be used to check any value that has been read in the log generated by the sail. For instance consider the following example from the log.
mem[X,0x80000924] -> 0x2573
mem[X,0x80000926] -> 0x3420
[670] [M]: 0x80000924 (0x34202573) csrrs a0, mcause, zero
CSR mcause -> 0x00000001
x10 <- 0x00000001

Coverpoint pattern
To check the value that is avaiable in the mcause which is given by:
CSR mcause -> 0x00000001

We can use the coverpoint in the following fashion:
'read_csr("mcause"): 0'

Issue:
Before this PR, there was no such support to check the value that had been read in the log which we can clearly see in the csail,py in which it tracks the pattern of the log instruction in the  instr_pattern_c_sail_csr_reg_val which is then passed to the csr_commit.
Before, instr_pattern_c_sail_csr_reg_val was only taking the values which were stored in the CSRs with <- but now, it takes both the values which will let us know which value was already available in the CSR.
Solution:
For solving this issue, I have changed the InstructionObject.py, c_sail.py and coverage.py as can be seen in the commits. User can simply write the coverpoint using the above pattern.
Immediate and rs2 value error resolved
As we know that there is no immediate value and rs2 for the CSR instructions, therefore, whenever the immediate value for the coverpoints is accessed in the val_comb, it generates None type error for the CSR instructions(but it should not check the CSR instructions immediate value and rs2 value). To resolve this issue, I have added the code to skip the instructions which have no immediate and rs2 in them which are obviously CSRs therefore it will skip them.
mstatush error resolved
As we know that there is no register name msatush in the log generated by sail rather it has its register value which is 784.
Consider the following log:
mem[X,0x800009D4] -> 0x25F3
mem[X,0x800009D6] -> 0x3100
[695] [M]: 0x800009D4 (0x310025F3) csrrs a1, 784, zero
CSR 784 -> 0x00000000
x11 <- 0x00000000

So, when the mnemonics has csrrs in the coverpoint, the above instruction will become the instruction of interest! Therefore, as there is no mechanism to translate the value 784 to the mstatush added in the riscv_isac, it generates no value error. To resolve this, I have added this in the csr_regs dictionary which will simply find the value of this register without generating any error.

Update to check the registers only of interest for read_csr() function:
First, if we used any coverpoint in the following pattern to compare the old_value of the register with the current value, it used to compare the register values with every instruction which was not required and we had no way to detect that whether the coverpoint of interest hit because of the required instruction or not. Now, if the user uses the coverpoints of the following pattern, then the isac will only check the instructions of interest for the coverpoint.
    (pmpcfg0    & 0x80 == 0x80) and (old("pmpcfg0") & 0xFF) ^ (pmpcfg0 & 0xFF) == 0x00 and old("pmpcfg0") != 0: 0

Explanation of the coverpoint pattern
The above coverpoint will check whether the value of the register pmpcfg0 is changed or not while trying to change in the assembly. So, consider the following:
mem[X,0x800003B0] -> 0x9073
mem[X,0x800003B2] -> 0x3A03
[176] [M]: 0x800003B0 (0x3A039073) csrrw zero, pmpcfg0, t2
CSR pmpcfg0 -> 0x00000000
CSR pmpcfg0 <- 0x9F9F9F9F (input: 0xFFFFFFFF)

mem[X,0x800003B4] -> 0xB073
mem[X,0x800003B6] -> 0x3A03
[177] [M]: 0x800003B4 (0x3A03B073) csrrc zero, pmpcfg0, t2
CSR pmpcfg0 -> 0x9F9F9F9F
CSR pmpcfg0 <- 0x9F9F9F9F (input: 0x00000000)

As, we try to change the value of the pmpcfg0 but it is not changed because of the lock bit, therefore, the value in the old_csr_regfile will not change which we can check using the coverpoint:
old("pmpcfg0") & 0xFF) ^ (pmpcfg0 & 0xFF) == 0x00

Mode Check Support:
In this commit, I have added the support for checking the Mode in which the hart is currently executed. Consider the following part of the log:
mem[X,0x80000A84] -> 0x2403
mem[X,0x80000A86] -> 0x1E41
[205] [M]: 0x80000A84 (0x1E412403) lw fp, 484(sp)
mem[R,0x800031E4] -> 0x5BFDDB7D
x8 <- 0x5BFDDB7D

Previously, there was no mechanism to determine the execution mode of the instruction.
Solution
Now, users can easily check the mode in which the hart executed the instruction using the following coverpoint:
    "mode == 'M' and ((pmpaddr2) >= 0x00000000) and ((pmpaddr2) <= 0xFFFFFFFF)": 0

This coverpoint ensures that the current instruction of interest is executed in the required mode.
Check address of Label defined in the test:
Earlier, there was no support for checking the address of labels defined in the test. Now, users can employ the following coverpoint pattern to find the address of any labeled point in the test:
    "get_addr('rvtest_data') == 0x80000388": 0

Usage
The get_addr() function can be valuable for users writing coverpoints, ensuring that any exceptions occurring during the test are specifically within the designated area of interest.

Without going into implementation details, this looks really good, and are necessary for many tests.
Have tests been written, along with a cgf file, so we can be sure they actually work properly?

Virtual Memory Implementation
In this commit, I have implemented the requested variables for the Physical address, virtual address, page table walk addresses for the instructions and data accesses in the issue # 57 by Mr. Pawan in the RISC-V ISAC.
Implementation
Consider the following log which will be used as a reference to explain the implementation:
mem[X,0x800007D4] -> 0x0073
mem[X,0x800007D6] -> 0x3020
[444] [M]: 0x800007D4 (0x30200073) mret
CSR mstatus <- 0x00000080
ret-ing from M to S

mem[R,0x82002900] -> 0x20800401
mem[R,0x82001000] -> 0x200000CF
mem[X,0x800007D8] -> 0xE737
mem[X,0x800007DA] -> 0x0000
[445] [S]: 0x900007D8 (0x0000E737) lui a4, 14
x14 <- 0x0000E000

mem[X,0x800007DC] -> 0x0713
mem[X,0x800007DE] -> 0xEAD7
[446] [S]: 0x900007DC (0xEAD70713) addi a4, a4, 3757
x14 <- 0x0000DEAD

mem[X,0x800007E0] -> 0xA423
mem[X,0x800007E2] -> 0x00ED
[447] [S]: 0x900007E0 (0x00EDA423) sw a4, 8(s11)
mem[R,0x82002930] -> 0x20800401
mem[R,0x8200100C] -> 0x20800CCF
mem[0x8200311C] <- 0x0000DEAD

As you may see in the log that the mode is switched to the S-mode using mret instruction and address translation is enabled using the satp register. For this test, the SV-32 is implemented and level 0 is used.

Previously, there was no way to access any of the page table walks, virtual address and physical address in case of virtual memory implementation.
Solution and Explanation
Now, consider the following coverpoint for understanding:
check_virtual_memory:
  config:
    - check ISA:=regex(.*32.*); check ISA:=regex(.*I.*Zicsr.*);  def rvtest_mtrap_routine=True; option VM = SV32;'
  mnemonics:
    sw: 0
  val_comb:
    'len_dptw == 2 and dptw1a == 0x82002930 and dptw0a == 0x8200100C and ieva == 0x900007E0 and iepa == 0x800007E0 and len_iptw == 2 and iptw1a == 0x82002900 and iptw0a == 0x82001000': 0

whose purpose is to target the following instruction in the above log file:
mem[X,0x800007E0] -> 0xA423
mem[X,0x800007E2] -> 0x00ED
[447] [S]: 0x900007E0 (0x00EDA423) sw a4, 8(s11)
mem[R,0x82002930] -> 0x20800401
mem[R,0x8200100C] -> 0x20800CCF
mem[0x8200311C] <- 0x0000DEAD

First of all, if you want to enable the following variables you need to add a flag option VM = SV(addressing scheme) where addressing scheme in this case was SV-32. You need to add this flag under the **config ** label.
  config:
    - check ISA:=regex(.*32.*); check ISA:=regex(.*I.*Zicsr.*);  def rvtest_mtrap_routine=True; option VM = SV32;'

As, you may see in the coverpoint, there are multiple variables being used, I will write the purpose of every variable one by one:

ieva
Virtual address of the instruction access
iepa
Physical address of the instruction access
depa
Physical address of the data access
ieva_align
Alignment check for the ieva
iepa_align
Alignment check for the iepa
depa_align
Alignment check for the depa

Instruction access page table walks
Now, for the page table walks for the address access of the instructions:
iptw0a,iptw1a,iptw2a,iptw3a,iptw4a
These variables are used for the page table walks for the instruction. To check how many were done in your case, you may use the following variable:
len_iptw
Data access page table walks
Now, for the page table walks for the address access of the data:
dptw0a,dptw1a,dptw2a,dptw3a,dptw4a
State for data access variables is not stored as these walks will be tracked on every data access. Their purpose is same as the instruction ones expect they are used for the data access page table walks.
Important
State of the variables for the page table walks of instruction access has also been stored which you may verify from the above sw a4, 8(s11) coverpoint. When the first page table walk is done, the state of these instruction page table walk address variables is not changed untill the mode is switched back to M - mode or the page table is accessed again making it easy for the user to track.

Value at Memory Location
In this commit, I have added the support for reading the value stored at a specific address. Consider the following coverpoint:
    'mem_val(get_addr("rvtest_data"),4) == 0xBEEDCAFE': 0

As, you may see that get_addr() that is added in previous commit was used to extract the address using the label is used in this coverpoint to get the address of rvtest_data and then the 4 written after the comma represents the size of memory we want to extract from the memory location. In this case, I wanted to get 4 Bytes, therefore, 4 is written. This is a function defined in the csr_comb.
User may also write a specific address of his/her interest to check the value stored at that address.
'(mem_val(0x80000388, 2) == 0xBEEDCAFE)': 0

PTE Permission Access Function
In this commit, I have added a function named as get_pte_per() which will make sure that permissions are set for the required physical address and also make sure that the PPN of the address at which the pte is stored is same as the PPN of the page table so we are sure that the pte is stored at the required location.
The python function is given as:
            def get_pte_per(pa, pte_addr, pgtb_addr, pte_size):
                if (pgtb_addr >> 12) == (pte_addr >> 12):
                    if ((pa >> 12) == (get_mem_val(pte_addr, pte_size) >> 10)):
                        return get_mem_val(pte_addr, pte_size) & 0x3FF
                    else:
                        return None
                else:
                    return None

The coverpoint for this functionality is given as:
check_for_the_isac:
  config:
    - check ISA:=regex(.*32.*); check ISA:=regex(.*I.*Zicsr.*);  def rvtest_mtrap_routine=True; option VM = SV32;
  mnemonics:
    sw: 0
    csrrw: 0
    csrrs: 0
    csrrc: 0
    lw: 0
  val_comb:
    'get_pte_per(get_addr("rvtest_data"),rs1_val + imm_val,get_addr("rvtest_slvl1_pg_tbl"),2) == 0xCF': 0

So, using this coverpoint we are sure that the pte is set for the rvtest_data

Also note that the level variable start is dependent on the SATP mode
(and, eventually the VSATP as well; when Sail implements H-extension, we will need to be able to distinguish them)
but can end anywhere between start and 1.  So that means code must now SATP.mode for the first PTE access (only)
in order to correctly label it, and each following one is decremented by one,
but any writes use the value of the preceding access and don't decrement level.
Also note that tests for  VM should make sure that TLBs are turned off in whichever model is the reference model (for these tests only)

VIrtual Memory Implementation:
Now, the coverpoints don't need a special lablel for the virtual memory else the track of all the virtual memory registers is kept by the isac itself using the satp register.

Now, the contents of the page table walk access have also been added which user may access using the label iptw0cont or dptw0cont e.t.c

    get_mem_val(2181042244,4) == 545259727: 0 #dptw0
    get_mem_val(2181048576,4) == 545260545: 0 #dptw1

PTE Permissions function updated to GET_PTE
The function to get the pte permissions has been updated to get_pte which you may use like the following coverpoint:
  val_comb:
    'get_pte(get_addr("rvtest_data"),rs1_val + imm_val,get_addr("rvtest_slvl1_pg_tbl")) == 0x800000CF': 0

Function to check the specific permission added
Now, the function to check the specific permission of the pte using the prop_name has also been added which you may use like the following:
    get_pte_prop('U',get_addr("begin_signature"), rs1_val + imm_val, get_addr("rvtest_slvl1_pg_tbl")) == 1: 0

Macros file Support Added
In this commit, I have added support for using a macro in the coverpoints.
Please consider the following macros/header file for the coverpoint:
common:
 shift_bit: 0x001
self:
 final_value: 0x012

The header file is written in the yaml format. Anything under the common label is available for all the cgf files that may include the header file.
User needs to add the following flags while running the risc-v isac command:
     -h -> header file flag
    -cm -> cgf macro flag

cm This flag allows to add the macros written specifically for the covergroup file. Complete command may look something like the following:
 riscv_isac --verbose info coverage -d                         -t /home/hammad/riscv-arch-test/riscof_work/torr_tests.S/torr_tests.log --parser-name c_sail -o coverage.rpt                          --sig-label begin_signature  end_signature  -e /home/hammad/riscv-arch-test/riscof_work/torr_tests.S/ref.elf -c /home/hammad/riscv-ctg/sample_cgfs/dataset.cgf -c /home/hammad/PMP_Coverpoints/checkcover_1.cgf -x32   -l virtual_memory_functions_test -h /home/hammad/header_file.yaml -cm self

Consider the following coverpoint:
  val_comb:
    ${shift_bit} == 1: 0
    ${final_value} == 0x012: 0

So, when user may run the above command, the coverpoints will be replaced by the values assigned in the headerfile written in yaml file.

Trap Register Variables
I have added few variables that keep track of the current instruction exceptions/traps.
The variables are

mode_change = From which mode we switched and to which mode. For instance, S to M
exc_num = Exception number
tval = tval
call_type = Type of exception. For instance load-page-fault or e-call

Coverpoint example
User may write the coverpoints for these variables in the following pattern:
val_comb:
    call_type == "load-page-fault": 0
    exc_num == 15: 0

So, these are simple variables, user may change the above coverpoints depending upon the use-case.

I would have named it "Exc_type" rather than call type, (since it will be
confused with the Ecall instruction ABI parameter), but that's not
important.
Aren't call_type and exc_num redundant, that is, each call type is just an
ascii string that defines the exc_num?
It may not be the case (there may be different causes that have the same
exc_num, for example).
In any case - it doesn't hurt sof don't remove anything.
But, if you're exposing tval and exc_num (which I'm assuming is the cause
CSR) ... which tval, cause? Mtval/Mcause or Stval/Scause ? (and eventually
the hypervisor versions)
Not that if you're in Mmode, it code can still read&write stval.
We will need to add xtval2 & xtinst  eventually for hypervisor traps ,
though there is no hurry for that.
On Thu, Jan 18, 2024 at 11:09 AM HammadBashir @.***>
wrote:

Trap Register Variables
I have added few variables that keep track of the current instruction
exceptions/traps.
The variables are

mode_change = From which mode we switched and to which mode. For
instance, S to M
exc_num = Exception number
tval = tval
call_type = Type of exception. For instance load-page-fault or
e-call

Coverpoint example
User may write the coverpoints for these variables in the following
pattern:
val_comb:
call_type == "load-page-fault": 0
exc_num == 15: 0
So, these are simple variables, user may change the above coverpoints
depending upon the use-case.
—
Reply to this email directly, view it on GitHub
https://github.com/riscv-software-src/riscv-isac/pull/80#issuecomment-1899056737,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHPXVJTL3CKPRZK4EOWKTQ3YPFXP5AVCNFSM6AAAAAA7LAAW6OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOJZGA2TMNZTG4
.
You are receiving this because you commented.Message ID:
@.***>

Trap Register Variables
This is the updated comment as
I have added few variables that keep track of the current instruction exceptions/traps.
The variables are

mode_change = From which mode we switched and to which mode. For instance, S to M
mcause/scause = Exception number
mtval/stval = tval
call_type = Type of exception. For instance load-page-fault or e-call

Coverpoint example
User may write the coverpoints for these variables in the following pattern:
val_comb:
    call_type == "load-page-fault": 0
    mcause == 15: 0

Explanation
The code has been updated such that it will check from the mode_change whether the mode change was to supervisor or machine mode, then it will update the respective register i.e., in supervisor or machine mode register respectively. Please refer to the commit: https://github.com/riscv-software-src/riscv-isac/pull/80/commits/ac4f34251089db834c1aaf7274db8385b7f6f281
Now, the arch-state for these mcause/scause, mtval/stval is also maintained which means that their values will only be updated when they are changed in the log by the instruction or by a trap.

@pawks , @allenjbaum  , @neelgala
I would be really thankful if anyone please start the review process for this PR.

@allenjbaum,
@MuhammadHammad001 has resolved all conflicts in this PR, can we please merge it before any other conflict occurs?

@pawks,
your attention is also required here as this PR is stalled for a few weeks.

@pawks All the required changes have been made, can you please review it again for any further changes

Introducing Translator Support
We've incorporated a script for translating CGF files to reduce redundancy at the user-end while writing the coverpoints. This script was developed in collaboration with Mr. @allenjbaum. To illustrate its functionality, let's examine a specific coverpoint:
PMP_TOR_priority_r:
  config:
    - check ISA:=regex(.*32.*); check ISA:=regex(.*I.*Zicsr.*);  def rvtest_mtrap_routine=True;
  mnemonics:
    "{csrrs, csrrw, lw, sw}" : 0
  csr_comb:
    ((pmpcfg3 >> 24) & {0x8C, 0x8A, 0x89}) == (0x8F & $1): 0                                  #Read, Write, execute Permission given to low priority region
    ((pmpcfg0 >> 24) & {0x8C, 0x8A, 0x89}) == (0x89 & $1): 0                                  #Read Permission given to high priority region
    pmpcfg{0, 3} != 0 and ((old("pmpcfg$1")) ^ (pmpcfg$1) != 0x00): 0                         #pmpcfg0(H.P0) and pmpcfg3(L.P) have been updated
    (old("pmpaddr{2, 3, 14, 15}")) ^ (pmpaddr$1) != 0x00: 0                                   #pmpaddr has been used and updated from the previous value i.e., 0x000
  val_comb:
    #Test for exceptions
    mode == {'M','S','U'} and (mcause != ${Load_access_fault}): 0                                             #No read fault
    mode == {'M','S','U'} and (mcause ==${Store_access_fault}): 0                                             #Write fault
    mode == 'M' and mode_change == {'M to M', 'U to M', 'S to M'} and (mcause == ${fetch_access_fault}): 0     #execute fault
    #check for the accesses
    ? (mnemonic == "lw" or mnemonic == "sw") and ((pmpcfg0 >> 24) & 0x9F == 0x89) and (rs1_val + imm_val >= (pmpaddr2 << 2)) and (rs1_val + imm_val < (pmpaddr3 << 2))
    : 0

The above will be processed by the translator_cgf.py and will result in the following coverpoint after the macros are resolved as well:
PMP_TOR_priority_r:
  config:
  - check ISA:=regex(.*32.*); check ISA:=regex(.*I.*Zicsr.*);  def rvtest_mtrap_routine=True;
  csr_comb:
    ((pmpcfg0 >> 24) & 0x89) == (0x89 & 0x89): 0
    ((pmpcfg0 >> 24) & 0x8A) == (0x89 & 0x8A): 0
    ((pmpcfg0 >> 24) & 0x8C) == (0x89 & 0x8C): 0
    ((pmpcfg3 >> 24) & 0x89) == (0x8F & 0x89): 0
    ((pmpcfg3 >> 24) & 0x8A) == (0x8F & 0x8A): 0
    ((pmpcfg3 >> 24) & 0x8C) == (0x8F & 0x8C): 0
    (old("pmpaddr14")) ^ (pmpaddr14) != 0x00: 0
    (old("pmpaddr15")) ^ (pmpaddr15) != 0x00: 0
    (old("pmpaddr2")) ^ (pmpaddr2) != 0x00: 0
    (old("pmpaddr3")) ^ (pmpaddr3) != 0x00: 0
    pmpcfg0 != 0 and ((old("pmpcfg0")) ^ (pmpcfg0) != 0x00): 0
    pmpcfg3 != 0 and ((old("pmpcfg3")) ^ (pmpcfg3) != 0x00): 0
  mnemonics:
    csrrs: 0
    csrrw: 0
    lw: 0
    sw: 0
  val_comb:
    ? (mnemonic == "lw" or mnemonic == "sw") and ((pmpcfg0 >> 24) & 0x9F == 0x89)
      and (rs1_val + imm_val >= (pmpaddr2 << 2)) and (rs1_val + imm_val < (pmpaddr3
      << 2))
    : 0
    mode == 'M' and (mcause != 0x05): 0
    mode == 'M' and (mcause == 0x07): 0
    mode == 'M' and mode_change == 'M to M' and (mcause == 0x01): 0
    mode == 'M' and mode_change == 'S to M' and (mcause == 0x01): 0
    mode == 'M' and mode_change == 'U to M' and (mcause == 0x01): 0
    mode == 'S' and (mcause != 0x05): 0
    mode == 'S' and (mcause == 0x07): 0
    mode == 'U' and (mcause != 0x05): 0
    mode == 'U' and (mcause == 0x07): 0


Don't switch to "Test explorer" when calling 'testing.runAll'

I set F7 key as keyboard shortcut for "testing.runAll". It works, but when I click then not only tests are run but also tab is switched to "Test explorer".
I prefer that tab isn't switched. I am ok with tests happening in background.
If any test will fail I will get prompt anyway, because I set "testing.automaticallyOpenPeekView": "failureAnywhere".

Partially similar issue: https://github.com/microsoft/vscode/issues/137737

This is configured via the testing.openTesting setting.


Tessendorf waves simulation

Description

Testing

TODO list:

https://user-images.githubusercontent.com/38212505/110803707-24d47a80-8288-11eb-9865-23dbd4243307.mp4
It still has to be centered, right?

https://user-images.githubusercontent.com/38212505/110803902-59e0cd00-8288-11eb-9d7a-c305320de59c.mp4
It still has to be centered, right?

tessendorf-waves-simulation-2021-03-11-16-06-59_tezBXDah.mp4
It still has to be centered, right?

not really because it gets tiled on a big ocean surface
The phase random seeding still looks wrong, it should have no discernible patterns at startup.

The phase random seeding still looks wrong, it should have no discernible patterns at startup.

Yeah it still looks symmetrical with respect to the diagonal. Will fix that

https://user-images.githubusercontent.com/38212505/110963386-aeed1380-835a-11eb-8997-2e220e4ebb43.mp4
ok this one looks fine for me,

https://user-images.githubusercontent.com/38212505/110966870-6afc0d80-835e-11eb-8b72-6397ea2135a3.mp4
Posting this here because discord slideshows my screen captures for some reason

something is very wrong here.

https://user-images.githubusercontent.com/38212505/111040473-c18b4980-843b-11eb-8006-dc58b44bf804.mp4
https://user-images.githubusercontent.com/38212505/111040525-f3041500-843b-11eb-88e0-0d168fb3206e.mp4
The second one is the first one but zoomed out 2x and tiled.

Tessendorf.Waves.Simulation.2021-03-13.20-35-39.mp4
Tessendorf.Waves.Simulation.2021-03-13.20-37-16.mp4
The second one is the first one but zoomed out 2x and tiled.

https://www.youtube.com/watch?v=xi_3v-FpKFg

@sadiuk DM me please on discord;)

https://user-images.githubusercontent.com/38212505/112663548-a3711080-8e61-11eb-98e5-983ead40f843.mp4
The best view i managed to achieve. Hate the lighting tho

Tessendorf.Waves.Simulation.2021-03-26.14-42-33.mp4
The best view i managed to achieve. Hate the lighting tho

add a skybox, fresnel and an underwater colour

I think i fixed all the stuff you commented about so far

[CI]: Can one of the admins verify this patch?


Exception handling to avoid errors in logging movie title

Same as in this pull request and like it is already for the TV episode name:
https://github.com/mdhiggins/sickbeard_mp4_automator/pull/118
you should use the same exception handling for the movie title:
try:
    print("Matched movie title as: %s %s" % (movie["title"].encode(sys.stdout.encoding, errors='ignore'), movie["release_date"].encode(sys.stdout.encoding, errors='ignore')))
except:
    print("Matched movie title")

Merged


removed empty lines

there are so many useless empty lines at the end of this file, I had to remove them ;)

Sorry, we've got conflicts now, probably due to the updates I just pushed. If you want to fix the new white line disgustingness, have at it and I'll try to approve quicker 👍


Fix build issues

I really wish we could enforce tests to pass :sob: come on github, support requiring tests if they're there, don't force us to run the entire test suite every time just to enforce passing tests.
Anyway this might fix the build

danke @gallardoalba


feature request: fuzzy search

Cool project. Was wondering if there are plans to support some kind of search, or fuzzy search, from the tui ? If this is already supported, I didn't see it in the examples.

Not currently supported, but should totally be possible!
Charm has a list bubble that has filter behavior when tapping /, this is actually used for the change extension file options in snips. Could definitely emulate this behavior for the file selector.

I'm just thinking out loud... maybe this is not among the primary use cases but I'd really like to store and manage my snipppets through snpis. Therefore a search would indeed be indispensable, so I second to the idea. Moreover, having the list of IDs in the left plane doesn't help the visibility and searchability either. So being able to name (or even tag) the snippets somehow would be a nice addition.
This project really caught my heart btw. 🤟

Yea named snips would definitely be a better experience (description too?)
Should be relatively easy to add to the database. My only worry is horizontal space in the terminal window, need to think about how to display snippets by name without it taking up too much space 🤔

I believe the length of the name can be quite restricted, yet the string remains useful, to fit into the left pane. Description is a good idea and the perfect candidate for the right pane.

Hey there, if this issue (add a "description" field) to the table view, I would like to work on it !

any update perhaps?


unfreeze specs2, freeze ScalaCheck

attempts to fix the specs2 failures in recent 2.12.x runs (part of #555)

test run: https://scala-ci.typesafe.com/job/scala-2.12.x-integrate-community-build/1596/consoleFull

specs2, scalatest, scalacheck, scalamock all passing locally, so I'm going to go ahead and merge


Collision detection for strokes

Add possibility to enable collisions for a stroke (or canvas).

Possible implementation:
Have an AnnotateColliderShape which exports an AnnotateCanvas variable.
this AnnotateColliderShape node then populates its parent with all necessary collision shapes for representing the AnnotateCanvas.
This would require the AnnotateCanvas to have some sort of "on_changed" signal fired any time it visually changes, so the AnnotateColliderShape nows when to update.
Additionally, AnnotateColliderShape would need to know when it is moved, so it can delete all of the CollisionShape2D nodes it populated the parent with.


[v2.1.0] All projects should have unique names error. Regression?

Describe the bug
After upgrading from v2.0.5 to 2.1.0 I now get the All projects should have unique names error, for every package.
The problem goes away if I downgrade back to 2.0.5
This seems like a regression maybe?
Reproduction
Unknown, I am unable to repro outside of our environment. Downgrading versions resolves.
System Info
System:
    OS: Linux 5.15 Ubuntu 20.04.6 LTS (Focal Fossa)
    CPU: (16) x64 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz
    Memory: 8.41 GB / 11.68 GB
    Container: Yes
    Shell: 5.0.17 - /bin/bash
  Binaries:
    Node: 20.12.2 - ~/.nvm/versions/node/v20.12.2/bin/node
    npm: 10.7.0 - ~/.nvm/versions/node/v20.12.2/bin/npm
    pnpm: 9.0.6 - ~/.nvm/versions/node/v20.12.2/bin/pnpm
  npmPackages:
    vitest: 2.0.5 => 2.0.5

### Used Package Manager

pnpm

### Validations

- [X] Follow our [Code of Conduct](https://github.com/vitest-dev/vitest/blob/main/CODE_OF_CONDUCT.md)
- [X] Read the [Contributing Guidelines](https://github.com/vitest-dev/vitest/blob/main/CONTRIBUTING.md).
- [X] Read the [docs](https://vitest.dev/guide/).
- [X] Check that there isn't [already an issue](https://github.com/vitest-dev/vitest/issues) that reports the same bug to avoid creating a duplicate.
- [X] Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/vitest-dev/vitest/discussions) or join our [Discord Chat Server](https://chat.vitest.dev).
- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.

You probably have miscofigured workspace config file. Check that you don't unintentionally have too broad glob. There were intentional changes to how they are reaolved

Hi, I tried creating a reproduction project. I hope it can be of some help. It seems that this problem occurs simply by having multiple directories.
export default defineWorkspace(['packages/*', 'apps/*']);

https://stackblitz.com/edit/vitest-dev-vitest-xzxfav

Hi, I tried creating a reproduction project. I hope it can be of some help. It seems that this problem occurs simply by having multiple directories.
export default defineWorkspace(['packages/*', 'apps/*']);

stackblitz.com/edit/vitest-dev-vitest-xzxfav

Thank you! This is indeed a bug

Does this PR resolve the problem, or does it just document the error better? 🤔

It resolves the issue that was reproducible and documents how the glob works more clearly (I hope).