EDID is printed 4 times in a row

What is this? EDID repeated 4 times...
https://github.com/linuxhw/EDID/blob/367495705ce43af63c83779bf502254068adfd3f/Digital/Chi Mei Optoelectronics/CMO1800/EA3921B8A7CD#L120
Maybe, it is normal though and is like that on connection level, I read about that... But still strange.

And here https://github.com/linuxhw/EDID/blob/f8bb9fac4519fc89872ed6cce7d086833068701a/Analog/Others/ZTY1910/37221757DCCA#L80

Fixed in master. Looks like some processing failure because I don't see such duplicates in original hardware probes.

There are others https://github.com/linuxhw/EDID/search?q=Block+1%2C+"Unknown+EDID+Extension+Block+0x00%3A"&type=

Fixed in master. Looks like some processing failure because I don't see such duplicates in original hardware probes.

I was wrong here.
See https://linux-hardware.org/index.php?probe=e814486254&log=edid
For EDID/Analog/Others/ZTY1910/37221757DCCA the content of edid file in the system is:
00ffffffffffff006a991019502d3101
0a17010308211b78eaeea69e544c9926
194f54afcf0061400101010101010101
01010101010124130020415818201090
1300510e1100001e000000fc004c4d31
3731302028564741290a000000fd0037
4c1e510e000a202020202020000000ff
0032303030303038300a2020202001eb
00ffffffffffff006a991019502d3101
0a17010308211b78eaeea69e544c9926
194f54afcf0061400101010101010101
01010101010124130020415818201090
1300510e1100001e000000fc004c4d31
3731302028564741290a000000fd0037
4c1e510e000a202020202020000000ff
0032303030303038300a2020202001eb

So this is probably a failure of the edid-decode.

Another example: Digital/Samsung/SAM0C1A/B2778629AC7D
Original probe: https://linux-hardware.org/index.php?probe=28f4f3baf5&log=edid
Content of edid file:
00ffffffffffff004c2d1a0c51475a5a
311a010380341d782a9791a556549d25
0e5054bfef80714f81c0810081809500
a9c0b3000101023a801871382d40582c
450009252100001e011d007251d01e20
6e28550009252100001e000000fd0032
4b1e5111000a202020202020000000fc
00533234453339300a2020202020019e
00ffffffffffff004c2d1a0c51475a5a
311a010380341d782a9791a556549d25
0e5054bfef80714f81c0810081809500
a9c0b3000101023a801871382d40582c
450009252100001e011d007251d01e20
6e28550009252100001e000000fd0032
4b1e5111000a202020202020000000fc
00533234453339300a2020202020019e

So this is probably a failure of the edid-decode.

No, it is not. It can be a failure of hw itself. If you will look into linux kernel source code, you will see that it has a fix for a case where the edid is repeated twice or even more times.

Not sure where we should fix this (remove or ignore dups): in hw-probe or edid-decode?

This is also very interesting, https://github.com/linuxhw/EDID/blob/master/Digital/Samsung/SAM0F99/A664A43B4200 contains only "EDID length 400 is not a multiple of 128".

This is also very interesting, https://github.com/linuxhw/EDID/blob/master/Digital/Samsung/SAM0F99/A664A43B4200 contains only "EDID length 400 is not a multiple of 128".

It's:
00ffffffffffff004c2d990f30303030
27180103807722782aa2a1ad4f46a724
0e5054bfef80714f810081c08180a9c0
b3009500d1c01a6800a0f0381f403020
3a00a9504100001a000000fd0018781e
a03c000a202020202020000000fc0043
3439524739780a2020202020000000ff
004831414b3530303030300a20200344
f0027000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
0000000000000000000000000000009e
02033df14c9061601f041312035a5d5e
5f2309070783010000e305c0006d030c
001000b83c20006001020367d85dc401
788003e60605018b7312e20f06565e00
a0a0a0295030203500a9504100001a58
4d00b8a1381440f82c4500a950410000
1e000000000000000000000000000000
0000000000000000000000000000007f
701279000003012833b70088ff139f00

See https://linux-hardware.org/?probe=aa6bc9219b&log=edid

It's:

It is actually this one https://github.com/linuxhw/EDID/blob/master/Digital/Samsung/SAM0F99/1B29EF7B1EB4#L101, but just a part of it, looks like a bug in the linux kernel. Just wonderful. BTW, this commit https://github.com/ValZapod/edid-decode/commit/86f098a425cd4ef9d699dc390f71a294fcf259a4 fixes that https://github.com/linuxhw/EDID/blob/2cebde343353e617ecbade749357d5077fc52dd8/Digital/Samsung/SAM0F99/1B29EF7B1EB4#L101


Any plan to integrate vvdec into ffmepg?

Is there any plan to integrate vvdec into ffmepg?

No. FFmpeg has its own VVC decoder.

There's a patchset to enable vvdec support in ffmpeg up to version 6.1 but it's no longer updated.

There's a patchset to enable vvdec support in ffmpeg up to version 6.1 but it's no longer updated.

This is only partially correct. Yes, there is a patchset, that has been submitted to the FFmpeg, but it was rejected, because they prefer the internal decoder implementation. So there is no point in resubmitting updated versions.
But we do have an updated version of the patchset linked in our wiki, which should apply against the latest versions of the FFmpeg code base. It's all documented here: https://github.com/fraunhoferhhi/vvdec/wiki/Integration-in-FFmpeg

but it was rejected

For two reasons:

It implemented all the VVC related data structures (now redundant)
FFMpeg wanted to have something native that they have full control and understanding of

Considering item 1 is now fully implemented, I'm pretty sure the new much lighter patch to integrate vvdec will be accepted. Also, the new patch will be a lot easier to maintain.
Sadly Thomas Siedel from Spin Digital hasn't returned my emails.


Document /teams/{teamId}

Document the API to return information about a team, including the name and AAD object ID. This corresponds to FetchTeamDetailsAsync in the SDKs.

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

ID: f16f5795-7015-3a4e-2e64-d08d4a6be78d
Version Independent ID: 6f8a9a3a-33c9-acc5-83d8-7645373bee3d
Content: Get context for your bot - Teams
Content Source: msteams-platform/concepts/bots/bots-context.md
Product: msteams
GitHub Login: @o365devx
Microsoft Alias: o365devx

This is now documented


feat: manage master credentials in secrets manager

what
Allow to manage master credentials in Secrets Manager
why
Managed secrets are more secure and easy to use.
references

closes https://github.com/cloudposse/terraform-aws-rds-cluster/issues/166
Duplicate of https://github.com/cloudposse/terraform-aws-rds-cluster/pull/218, but that PR looks like it's gone stale. I pushed the same fixes to the original branch as well, in case @salemgolemugoo wanted to push them forward to Pull 218, but that hasn't had any activity either.

/terratest

/terratest

/terratest

@gberenice updated to address the failed tests

/terratest

/terratest


Wizard: Add filtering to repositories

Resolves HMS-1198.
Two commits:
(1) Resolves HMS-1198 by adding filtering on architecture and version to repositories table. Repositories are now fetched using RTK Query.
(2) Adds a few minor improvements to the repositories table, bringing it closer to current designs. Namely, a refresh button to help ensure uninterrupted customer workflow while adding repositories and slight change in copy on the wizard's repositories step.

/retest

One thing I'm thinking about - in case there's a longer list of repositories, do we want to scroll the entire content of the step or just the list? Might be nice to be able to filter and refresh the list without having to scroll all the way up, what do you think?
Also this is just a "cosmetic" change so we can take a look at it separately.

One thing I'm thinking about - in case there's a longer list of repositories, do we want to scroll the entire content of the step or just the list? Might be nice to be able to filter and refresh the list without having to scroll all the way up, what do you think?
Also this is just a "cosmetic" change so we can take a look at it separately.

Hm, yes that is a great idea to make the only table scrollable, I like it!

Currently failing IQE tests but @jrusz has issued an MR that should get them passing: https://gitlab.cee.redhat.com/insights-qe/iqe-image-builder-plugin/-/merge_requests/40


Jacobian adjustment due to change of variables.

May need to make a jacobian adjustment to deal with change of variables. Still getting my head around this.
Some resources (in difficulty order):

https://mc-stan.org/docs/2_18/reference-manual/change-of-variables-section.html#change-of-variables.section
https://jsocolar.github.io/jacobians/
https://rstudio-pubs-static.s3.amazonaws.com/486816_440106f76c944734a7d4c84761e37388.html
https://betanalpha.github.io/assets/case_studies/probability_theory.html#1_setting_a_foundation

This was a good source for this: https://discourse.mc-stan.org/t/basic-newbie-question-about-transforming-a-parameter-and-jacobians/1314/5


Missing Checkpoint info

I am using PG 10 on RDS with default non-changeable log_line_prefix: '%t:%r:%u@%d:[%p]:'
I am running pgbadger 11.3 on CentOS 8.
I am parsing one 4 GB log file that I downloaded from RDS.  It contains 1 hour of time.
Here is the command:
pgbadger postgresql.log.2020-11-09-21.log -j 6 -d  mydb -p '%t:%r:%u@%d:[%p]:'  -o /var/lib/pgsql/pgbadger_reports/pgbadger_2020-11-09-21.html
I am missing everything on the Checkpoints page.  Everything else looks good on the pgbadger html output report.
Here are my config settings:
log_min_duration_statement = 0
log_duration = off
log_statement = 'none'
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default

I see checkpoint start and complete lines in the log file, but they are not being picked up by pgbadger.

I am wondering if specifying a specific database prevents some global things from being captured like checkpoints?

Hi Michael,
Yes the checkpoint are not related to a specific database and as the lines parsed are filtered by database mydb the checkpoint statistics are not available. For autovaccum you will see only the information about tables from the database in the filter.


HV-515 - Performance improvement for MinValidatorForString

https://hibernate.onjira.com/browse/HV-515

rebased and applied - thanks :-)


Windows support: spawn

When using agda-mode on Windows, loading causes the following error:
"spawn  ENOENT "
spawn does not exist on windows.
It should probably use another command to execute agda on windows.

I can't seem to reproduce the error, could you provide some more detail:

the version of your Windows
the version of agda-mode
some fields of the settings of agda-mode:
Agda execution path
Agda program arguments
Automatically search for executable path
Agda program name
and copy what it shows in the console (right-click on the editor > inspect element > console )

Thanks.

spawn ENOENT

This is really weird because spawn appears to be executed as a command, but it was actually invoked from the node.js API (child_process.spawn(command[, args][, options])), which should be available on all platforms.

Battle hardened in FLOLAC16, looks fine on all machines including Windows, closing this issue.


Ch 23 - Error when posting new user via API due to no last_seen entry

I'm up to the part where we're testing our new way of creating users, with the instruction to create Alice:
venv) $ http POST http://localhost:5000/api/users username=alice password=dog \<EMAIL_ADDRESS>"about_me=Hello, my name is Alice!"
I am seeing this error, which I interpret as being due to the app expecting a "last seen" time with any new user.
Traceback (most recent call last):
  File "~/venv/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "~/venv/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "~/venv/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "~/venv/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "~/venv/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "~/app/api/users.py", line 45, in create_user
    response = jsonify(user.to_dict())
  File "~/app/models.py", line 171, in to_dict
    'last_seen': self.last_seen.isoformat() + 'Z',
AttributeError: 'NoneType' object has no attribute 'isoformat'

Running with my theory, I confirmed it is creating the user in the database, so I attempted logging in as Alice, hoping it would assign a "last seen"; however, the app simply continued throwing errors.

The last_seen field has a default assigned to it (here: https://github.com/miguelgrinberg/microblog/blob/master/app/models.py#L91), so whenever you create a new user the current time should be assigned to this field. Maybe you missed that in your copy of the application?

Ah, you're right, and it seems to be a versioning problem.
That line was added to the code in Chapter 6: https://learn.miguelgrinberg.com/read/mega-tutorial/ch06.html#cid50
In Chapter 15, I copied your code over, so I was sure I had the right Blueprint. In your version of Chapter 15, it's missing the assignment: https://github.com/miguelgrinberg/microblog/blob/v0.15/app/models.py#L25.
In fact, I went through many of the versions of models.py and it doesn't seem to appear again until your Ch23 version.

Ah, yes, looks like I did not add that default in the right commit. It should be fixed now.


Update testnet TX lookup URL (blockr.io is offline)

In helpers.py get_tx_lookup_chain() has to be updated because blockr.io is offline. Another service should be used for testnet transaction lookup.

fixed with #67


merge package from arlac77/npm-package-template

package.json

chore(package<EMAIL_ADDRESS>chore(scripts): cover@#overwrite c8 --temp-directory build/coverage ava && c8 report -r lcov --temp-directory build/coverage
chore(package): add xo from template
chore(package): add nyc from template
chore(package): set $.ava.require='esm' as in template
chore(package): set $.ava.files='tests/-test.js,tests/-test.mjs' as in template
chore(package): set $.ava.extensions='js,mjs' as in template

Codecov Report

Merging #365 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #365   +/-   ##
=======================================
  Coverage   93.93%   93.93%
=======================================
  Files           1        1
  Lines          33       33
=======================================
  Hits           31       31
  Misses          2        2

Continue to review full report at Codecov.

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

Coverage remained the same at 91.489% when pulling 90c094245ac696d3dabe60dc3a0c120ba9386696 on template-sync-1 into c62ccb7b9c4efbc7e7b0af70d8d4e90c5d86e277 on master.


[nrf fromtree] doc: fix parsing directive inside literal

This expands the current directive matching regex to also allow "`" as an ending character along with spaces; it fixes issues when directives are added inside a literal ("``").
Technically this is not correct, a directive must always end in space-like characters,  but a proper parser would know that it is inside a literal and accept the contents without interpretation; short of implementing a proper rST parser this should work with no side-effects.
JIRA: NCSDK-7485

Related to https://github.com/nrfconnect/sdk-nrf/pull/3574. I am not sure if this can go in here, or should it go to upstream first?

Related to nrfconnect/sdk-nrf#3574. I am not sure if this can go in here, or should it go to upstream first?

Please send this PR upstream first, and then send one here with either fromlist if in a PR upstream or fromtree if it's already merged upstream

Please send this PR upstream first, and then send one here with either fromlist if in a PR upstream or fromtree if it's already merged upstream

Done.

@utzig is this still required or was the upstream PR already merged in as part of @jfischer-no's upmerge?

@utzig is this still required or was the upstream PR already merged in as part of @jfischer-no's upmerge?

@utzig is this still required or was the upstream PR already merged in as part of @jfischer-no's upmerge?

Oh yeah, it was part of the upmerge, closing this PR.

@utzig is this still required or was the upstream PR already merged in as part of @jfischer-no's upmerge?

Oh yeah, it was part of the upmerge, closing this PR.


Using Intermediate (non-Input) Layer as input to secondary network

System information

TensorFlow version: 2.3.0
Are you willing to contribute it: No

Describe the feature and the current behavior/state.
Currently, a user can define a network to only run partially through a network using something like below:
# Load Pre-Trained Model
model = ...
# Using I/O of previous model, build model with an additional (or replacement) output
first_half = tf.keras.models.Model(model.inputs, model.get_layer("some_intermediate_layer_n").output)

However, if you were to build a final model to run through the remainder of the network, from some_intermediate_layer_n onward, it falls over. It would be nice to be able to make a similar call, to use the base models outputs, but starting from an intermediate input step as below. You could use the output from the network above as the input for the remainder of the network in this example.
 second_half = tf.keras.models.Model(model.get_layer("some_intermediate_layer_n_plus_1").input, model.outputs)

The exact warning is WARNING:tensorflow:Functional inputs must come from tf.keras.Input (thus holding past layer metadata), they cannot be the output of a previous non-Input layer. This is quickly followed by a Graph Disconnected error.
Will this change the current api? How?
Not to my knowledge. Should be able to call in a similar fashion above, where the new input is the intermediate layer you wish to start from.
Who will benefit with this feature?
Any network architecture where an intermediate representation is important. Architecture's reliant on pairs of networks, or encoding networks would benefit at the inference stage.
Any Other info.
I'm assuming it's quite likely this has been requested before but I couldn't find it. If so, it would also be nice to have an explanation as to why the current limitation to inputs coming from tf.keras.Input (thus holding past layer metadata) is important. I understand this from a training perspective, but when inferring, I would've thought this could be overlooked.
I of course understand you could build two networks with the latter building on from the prior but this way you can wrap it all up into one when training, or if using a pre-trained network, you can split it out as and when needed.
Thank you.

Do you have a very, very minima but runnable example or colab to reproduce this?

I'll pull something together with some sample weights tomorrow!
Thanks

Please see the primitive example below;
import tensorflow as tf
def def_enc_dec_pair():
    input_ = tf.keras.layers.Input(shape=[None, None, 3])
    x_e = tf.keras.layers.Conv2D(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(input_)
    x_e = tf.keras.layers.Conv2D(filters=16, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(x_e)
    x_e = tf.keras.layers.Conv2D(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(x_e)
    x_e = tf.keras.layers.Conv2D(filters=3, kernel_size=(3, 3), strides=(2, 2), padding="SAME", name="encoded_layer")(x_e)

    x_d = tf.keras.layers.Conv2DTranspose(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME", name="second_section")(x_e)
    x_d = tf.keras.layers.Conv2DTranspose(filters=16, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(x_d)
    x_d = tf.keras.layers.Conv2DTranspose(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(x_d)
    x_d = tf.keras.layers.Conv2DTranspose(filters=3, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(x_d)

    model = tf.keras.Model(inputs=[input_], outputs=[x_d])
    model.compile(optimizer=tf.optimizers.Adam(), loss=[tf.keras.losses.MSE])

    return model

base_model = def_enc_dec_pair()
# base_model.summary()

first_half = tf.keras.Model(base_model.inputs, base_model.get_layer("encoded_layer").output)
# first_half.summary()

second_half = tf.keras.Model(base_model.get_layer("second_section").input, base_model.output)
second_half.summary()

Note that for usability, it would be beneficial to call the input to second_half as one of the following options in this example
base_model.get_layer("encoded_layer").output
base_model.get_layer("second_section").input
first_half.output
I hope this clarifies exactly what i'm talking about. base_model and first_half build fine but second_half fails for the previously mentioned reason.

So it seems to me that your 2nd use case it is like: https://stackoverflow.com/questions/52800025/keras-give-input-to-intermediate-layer-and-get-final-output

That looks like what i'm after yes. Using against this trivial example you'd build as such
...
second_input_shape = base_model.get_layer("encoded_layer").output.shape
second_input_shape = second_input_shape[1:]  # Remove Batch from front.
second_input = tf.keras.layers.Input(shape=second_input_shape)
x = second_input
for layer in base_model.layers[5:]:  # encoded_layer idx + 1
    x = layer(x)

second_half = tf.keras.Model(second_input, x)
second_half.summary()

For this simplistic approach, the above is okay but it could quickly get out of hand as the original stackoverflow answer points out. In my actual code i'm having to do something slightly more convoluted to stitch the remaining layers together.
Considering the initial hurdle is simply to create an Input Layer with dimensions to match the layer we want, is it something that could still be of added benefit?
My suggestion would be instead of throwing the warning, an attempt could be made to simply create an Input from the requested starting point (whether that's the output shape of a layer or the input shape of the next as they'll match up ofc), and then look at all the connections from the base network that are required to go from this point in the original model to the requested output.

So do you mean that you want to automate this?

Basically yes

I don't know the recent internals design limit to automate this in the Keras API
/cc @tanzhenyu do you have an opinion about this?

Just to state for the record the above solution becomes a nightmare when you're using anything residual or with multiple paths, which is why is why it would be so useful to base it off of the knowledge you already have about all the connections from the original base_model

This is where subclassed model works better than functional models:
class Encoder(tf.keras.Model):
  def __init__(self):
    super(Encoder, self).__init__()
    self.encoder_layers = []
    self.encoder_layers.append(tf.keras.layers.Conv2D(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME"))
    self.encoder_layers.append(tf.keras.layers.Conv2D(filters=16, kernel_size=(3, 3), strides=(2, 2), padding="SAME"))
    self.encoder_layers.append(tf.keras.layers.Conv2D(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME"))
    self.encoder_layers.append(tf.keras.layers.Conv2D(filters=3, kernel_size=(3, 3), strides=(2, 2), padding="SAME", name="encoded_layer"))

  def call(self, inputs):
    output = inputs
    for layer in self.encoder_layers:
      output = layer(output)
    return output

class Decoder(tf.keras.Model):
  def __init__(self):
    super(Decoder, self).__init__()
    self.decoder_layers = []
    self.decoder_layers.append(tf.keras.layers.Conv2DTranspose(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME", name="second_section"))
    self.decoder_layers.append(tf.keras.layers.Conv2DTranspose(filters=16, kernel_size=(3, 3), strides=(2, 2), padding="SAME"))
    self.decoder_layers.append(tf.keras.layers.Conv2DTranspose(filters=8, kernel_size=(3, 3), strides=(2, 2), padding="SAME"))
    self.decoder_layers.append(tf.keras.layers.Conv2DTranspose(filters=3, kernel_size=(3, 3), strides=(2, 2), padding="SAME"))

  def call(self, inputs):
    output = inputs
    for layer in self.decoder_layers:
      output = layer(output)
    return output

class MyModel(tf.keras.Model):
  def __init__(self):
    super(MyModel, self).__init__()
    self.encoder = Encoder()
    self.decoder = Decoder()

  def call(self, inputs):
    return self.decoder(self.encoder(inputs))

Making things modular will also help you even in residual path case, no?

@phillips96 Of course If you don't need to be constrained inside the functional API perimeter as @tanzhenyu's suggested you can handle this with model subclass.

Thanks @tanzhenyu, so my actual application uses subclassed models in a similar fashion to this.
I just found it curious that the api is capable of building a sub-model going from the input to and intermediate layer using that api call, but you can't go from the intermediate layer to the final output it quite the same fashion.
Happy to close this if it's not something that seems overall beneficial to the repository 😄

Thanks @tanzhenyu, so my actual application uses subclassed models in a similar fashion to this.
I just found it curious that the api is capable of building a sub-model going from the input to an intermediate layer using that api call, but you can't go from the intermediate layer to the final output in quite the same fashion.
Happy to close this if it's not something that seems overall beneficial to the repository 😄

No, I agree with you, this seems desirable, however currently blocked by the same reason mentioned in the stackflow thread. Contribution welcome!

@tanzhenyu Yes this was the real question. Glad to know that there is any hard design constrain to implement this.
@phillips96 I suppose that a PR is welcome if you want to implement this behaviour.

@bhack sure thing.
This will be my first PR here so I'll sign up to the contributors forms and do some initial scoping for this.

@phillips96 Glad you were able to solve your issue. If you wanna contribute, please post this issue in keras-team/keras repo as the development of keras has been moved to a different repo. Thanks!!


Error on snapshot creation

Hi,
Snapshot creation doesn't work on my side. There is just a error message in the log without further details.
2024-06-17 07:32:09,439 INFO Executing bookmarks.services.tasks._schedule_html_snapshots_task: 9fca67f9-f046-43fd-861d-c401fd2d009d
2024-06-17 07:32:09,447 INFO Create HTML snapshot for bookmark. url=https://github.com/sissbruecker/linkding
  fetch failed URL: https://github.com/sissbruecker/linkding        Stack: TypeError: fetch failed
at node:internal/deps/undici/undici:12502:13
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
               at async file:///usr/lib/node_modules/single-file-cli/node_modules/simple-cdp/mod.js:214:24
 at async retryConnection (file:///usr/lib/node_modules/single-file-cli/node_modules/simple-cdp/mod.js:237:16)
 at async Module.getPageData (file:///usr/lib/node_modules/single-file-cli/lib/cdp-client.js:49:16)
            at async capturePage (file:///usr/lib/node_modules/single-file-cli/single-file-cli-api.js:265:20)
             at async runNextTask (file:///usr/lib/node_modules/single-file-cli/single-file-cli-api.js:178:20)
             at async Promise.all (index 0)
              at async capture (file:///usr/lib/node_modules/single-file-cli/single-file-cli-api.js:129:2)
at async run (file:///usr/lib/node_modules/single-file-cli/single-file-launcher.js:85:3)
2024-06-17 07:32:32,485 ERROR Failed to HTML snapshot for bookmark. url=https://github.com/sissbruecker/linkding
Traceback (most recent call last):
            File "/etc/linkding/bookmarks/services/tasks.py", line 363, in _create_html_snapshot_task
     singlefile.create_snapshot(asset.bookmark.url, filepath)        File "/etc/linkding/bookmarks/services/singlefile2024-06-17.py", line 34, in create_snapshot
            raise SingeFileError("Failed to create snapshot")             bookmarks.services.singlefile.SingeFileError: Failed to create snapshot
2024-06-17 07:32:32,654 INFO bookmarks.services.tasks._schedule_html_snapshots_task: 9fca67f9-f046-43fd-861d-c401fd2d009d executed in 23.215s
2024-06-17 07:33:01,392 INFO Enqueueing periodic task bookmarks.services.tasks._schedule_html_snapshots_task: 3eb6f418-8a0b-4987-bc25-5cb014de397c.
2024-06-17 07:33:01,661 INFO Executing bookmarks.services.tasks._schedule_html_snapshots_task: 3eb6f418-8a0b-4987-bc25-5cb014de397c
2024-06-17 07:33:01,673 INFO bookmarks.services.tasks._schedule_html_snapshots_task: 3eb6f418-8a0b-4987-bc25-5cb014de397c executed in 0.011s
2024-06-17 07:34:01,391 INFO Enqueueing periodic task bookmarks.services.tasks._schedule_html_snapshots_task: 241f3f5d-ccfe-4dcc-aa8e-44a9cfd9cf4f.
2024-06-17 07:34:05,392 INFO Executing bookmarks.services.tasks._schedule_html_snapshots_task: 241f3f5d-ccfe-4dcc-aa8e-44a9cfd9cf4f
2024-06-17 07:34:05,396 INFO bookmarks.services.tasks._schedule_html_snapshots_task: 241f3f5d-ccfe-4dcc-aa8e-44a9cfd9cf4f executed in 0.003s
2024-06-17 07:35:01,391 INFO Enqueueing periodic task bookmarks.services.tasks._schedule_html_snapshots_task: 762d9ccc-ef16-412b-951b-0302f6638301.
2024-06-17 07:35:06,384 INFO Executing bookmarks.services.tasks._schedule_html_snapshots_task: 762d9ccc-ef16-412b-951b-0302f6638301
2024-06-17 07:35:06,390 INFO bookmarks.services.tasks._schedule_html_snapshots_task: 762d9ccc-ef16-412b-951b-0302f6638301 executed in 0.005s
2024-06-17 07:36:01,392 INFO Enqueueing periodic task bookmarks.services.tasks._schedule_html_snapshots_task: d271f646-3132-4418-82c2-8e0d34690db3.
2024-06-17 07:36:09,116 INFO Executing bookmarks.services.tasks._schedule_html_snapshots_task: d271f646-3132-4418-82c2-8e0d34690db3
2024-06-17 07:36:09,122 INFO bookmarks.services.tasks._schedule_html_snapshots_task: d271f646-3132-4418-82c2-8e0d34690db3 executed in 0.005s
2024-06-17 07:37:01,391 INFO Enqueueing periodic task bookmarks.services.tasks._schedule_html_snapshots_task: d307a210-2cf8-4203-803c-f334d505acea.
2024-06-17 07:37:02,842 INFO Executing bookmarks.services.tasks._schedule_html_snapshots_task: d307a210-2cf8-4203-803c-f334d505acea
2024-06-17 07:37:02,847 INFO bookmarks.services.tasks._schedule_html_snapshots_task: d307a210-2cf8-4203-803c-f334d505acea executed in 0.005s
2024-06-17 07:38:01,391 INFO Enqueueing periodic task bookmarks.services.tasks._schedule_html_snapshots_task: 65b2be77-4c73-4566-9f9e-bbf03604a321.
2024-06-17 07:38:06,568 INFO Executing bookmarks.services.tasks._schedule_html_snapshots_task: 65b2be77-4c73-4566-9f9e-bbf03604a321
2024-06-17 07:38:06,576 INFO bookmarks.services.tasks._schedule_html_snapshots_task: 65b2be77-4c73-4566-9f9e-bbf03604a321 executed in 0.008s

Thanks for the great app.
Cheers.

What's the URL you're trying to create a snapshot for?

Tried several urls. As listed in the log above, I used https://github.com/sissbruecker/linkding to create the error case.
I anyway migrated from a Raspberry Pi4 to a Dell Wyse 5070 in the meantime and don't have a problem with snapshot creation anymore.
Ticket can be closed.


(0) Invalid argument: Input to reshape is a tensor with 0 values, but the requested shape has 169344

Please make sure that this is a bug. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:bug_template
System information
I use the images rocm/tensorflow:rocm2.10.0-tf1.14-dev

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
OS Platform and Distribution (e.g., Linux Ubuntu 16.04):Ubuntu 16.04
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary):images
TensorFlow version (use command below):tf1.14
Python version:3.5
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
ROCm/MIOpen version:rocm2.10
GPU model and memory:gfx906/16g
-HOROVOD :0.18.1

You can collect some of this information using our environment capture
script
You can also obtain the TensorFlow version with: 1. TF 1.0: python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)" 2. TF 2.0: python -c "import tensorflow as tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"
Describe the current behavior
I run the FastRCNN examples which under the tensorpack
python3 train.py
I have already ask the question in tesnorpack-issue  ,maybe is a bug from tensorflow,can you give me some advices?
Describe the expected behavior
Code to reproduce the issue
Provide a reproducible test case that is the bare minimum necessary to generate the problem.
Other info / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.
the log which I change the code to train is gitdiff
diff-log.txt
the log which contain error is
xuan-docker-v1.log

Probably #325, should be fixed in ROCm 3.0?

@sebpuetz  I run the program use imges:rocm/tensorflow:rocm3.0-tf1.14-python3,the same error
xuan-rocm3.0-4dcu.log

@sebpuetz I run the program use imges:rocm/tensorflow:rocm3.0-tf1.14-python3,the same error
xuan-rocm3.0-4dcu.log

Hi @XuanBaby , in your new log there's no longer messages w.r.t. Invalid argument: Input to reshape error, hence the original issue might have been fixed in ROCm3.0 docker container.
Can you list the exact steps to reproduce your issue?
cc @jeffdaily

Hi @sunway513  I did not change the code,just run it in images:rocm/tensorflow:rocm3.0-tf1.14-python3.  reshape error not found but in the two logs ,the traceback information are same,
in addition ,about the warrning  W tensorflow/core/kernels/queue_base.cc:277] _0_QueueInput/input_queue: Skipping cancelled enqueue attempt with queue not closed  Why the warning? could you give me some guides?

I see from the initial issue report that you are using horovod, and I also confirm from the latest log that you are running using mpirun (again, for horovod).
[2019-12-23 02:33:32.389346: W horovod/common/stall_inspector.cc:105] One or more tensors were submitted to be reduced, gathered or broadcasted by subset of ranks and are waiting for remainder of ranks for     more than 60 seconds. This may indicate that different ranks are trying to submit different tensors or that only subset of ranks is submitting tensors, which will cause deadlock.

How did you install horovod?  From the main repo?  Our fork/branch?

Hi @jeffdaily ,about horovod,I try two way to install,
One isuse the horovod/horovod,default, HOROVOD_GPU_ALLREDUCE=MPI HOROVOD_GPU_ALLGATHER=MPI HOROVOD_GPU_BROADCAST=MPI HOROVOD_GPU_ROCM=True HOROVOD_WITHOUT_GLOO=1 HOROVOD_CPU_OPERATIONS=MPI HOROVOD_WITHOUT_MXNET=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITH_TENSORFLOW=1 python3 setup.py install
the other is ROCmSoftwarePlatform/horovod
-b hip
HOROVOD_NCCL_LINK=SHARED HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_NCCL_HOME=/opt/rocm/rccl/ HOROVOD_GPU_ROCM=1 HOROVOD_WITHOUT_GLOO=1 HOROVOD_CPU_OPERATIONS=MPI HOROVOD_WITHOUT_MXNET=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITH_TENSORFLOW=1 python3 setup.py install
they all could cause the problems.

Thank you for providing more details.  I will try and reproduce.
Note that when using https://github.com/horovod/horovod, it will ignore the HOROVOD_GPU_ROCM=1 setting -- we haven't yet had our upstreaming PR approved and merged.
You may continue to try using https://github.com/ROCmSoftwarePlatform/horovod, either the hip branch or the newer hip-pimpl branch.  These two hip branches in our fork are the two attempts thus far at upstreaming ROCm support and behave similarly.  The hip branch has been rejected by upstream and we have an ongoing discussion how to move forward with upstreaming ROCm support.

@jeffdaily Thank you for your help .
and about https://github.com/ROCmSoftwarePlatform/horovod I have another question,when I try use pytorch & horovod ,I can install pytorch and horovod together,but when I run the horovod/examples,the error bellow:
Traceback (most recent call last):   File "pytorch_imagenet_resnet50.py", line 157, in <module>     hvd.broadcast_parameters(model.state_dict(), root_rank=0)   File "/public/home/yangxuan1/Pytorch/Python3.6.8/lib/python3.6/site-packages/horovod-0.18.1-py3.6-linux-x86_64.egg/horovod/torch/__init__.py", line 279, in broadcast_parameters     handle = broadcast_(p, root_rank, name)   File "/public/home/yangxuan1/Pytorch/Python3.6.8/lib/python3.6/site-packages/horovod-0.18.1-py3.6-linux-x86_64.egg/horovod/torch/mpi_ops.py", line 409, in broadcast_     handle = broadcast_async_(tensor, root_rank, name)   File "/public/home/yangxuan1/Pytorch/Python3.6.8/lib/python3.6/site-packages/horovod-0.18.1-py3.6-linux-x86_64.egg/horovod/torch/mpi_ops.py", line 387, in broadcast_async_     return _broadcast_async(tensor, tensor, root_rank, name)   File "/public/home/yangxuan1/Pytorch/Python3.6.8/lib/python3.6/site-packages/horovod-0.18.1-py3.6-linux-x86_64.egg/horovod/torch/mpi_ops.py", line 297, in _broadcast_async     tensor, output, root_rank, name.encode() if name is not None else _NULL) RuntimeError: Internal error. Requested ReadyEvent with GPU device but not compiled with CUDA.
could you give me some advice? thank you very much!

@XuanBaby That is because we have not yet enabled Horovod with PyTorch.  The build will succeed because the CUDA code in the horovod/torch directory is conditionally compiled, but the non-CUDA path that you are getting will simply error out as you have encountered.  ROCm+PyTorch+Horovod is in development.

@jeffdaily  when will it be supported? do you have the roadmap about it?

Closing this ticket since the original issue is resolved, Invalid argument: Input to reshape.  Please open a new ticket for any additional issues.  Thanks.


GSD Request

--- GSD JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from v4.19 to before v5.15.11",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=41cbb0f5a29592874355e4159489eb08337cd50e",
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c62b16f98688ae7bc0ab23a6490481f4ce9b3a49"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "41cbb0f5a29592874355e4159489eb08337cd50e",
      "note": "introduced"
    },
    {
      "type": "commit",
      "value": "c62b16f98688ae7bc0ab23a6490481f4ce9b3a49",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "mac80211: validate extended element ID is present\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v5.15.11 by commit c62b16f98688ae7bc0ab23a6490481f4ce9b3a49, it was introduced in version v4.19 by commit 41cbb0f5a29592874355e4159489eb08337cd50e. For more details please see the references link."
}
--- GSD JSON ---

This issue has been assigned GSD-2021-1002725


[HierarchyList] expandable and non-expandable items at same level should be horizontally aligned

Currently Items with no children show up without any indent and are not aligned with items at the same level that do have children, since those are indented for the expand/collapse carat. This implies incorrectly a hierarchical relationship between these items.
Expected behavior is that all items  at the same level will be horizontally aligned. If an item does not have child items it should be indented to match the ones that are indented for carats.
Screenshot shown here:
(In this situation, Home and My Reports are at the same level as the items below. They should be indented.)

In addition, children items have the same indent padding as the parent items. This will cause visual confusion between which items are children and which items are root level items with no children.
We'll expand this issue to cover general improvements to the visual treatment of hierarchy list to include:

Root level items with no children should be indented to align with items (the initial issue reported above)
Children items should have slightly more indentation than their parent.
Caret direction needs to be flipped to be consistent with sidenav and accordion. When the section is closed, the arrow should point down.

Screenshot mockup of the intended outcome:

:tada: This issue has been resolved in version 2.124.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add GoatCounter

I set up Goatcounter for the HoloViz blog as an experiment, we decided it was good enough for our purposes and to implement it across all our sites.

Implementation-wise, we can add support for it in nbsite directly (possibly upstreamed later to the pydata theme), basically copying what was recently done in the conda ecosystem https://github.com/conda-incubator/conda-sphinx-theme/pull/9. I have already implemented most of it.
There are a few issues to resolve/decisions to make before finishing the implementation and opening PRs on every project:

Goatcounter doesn't really support tracking of multiple subdomains (e.g. panel.holoviz.org, lumen.holoviz.org) on the same dashboard; when multiple sites send data to Goatcounter the page views in the dashboard all seem to come from the same domain by default. There are two alternative ways to address that:

creating multiple accounts, each dedicated to a subdomain (I checked it's possible to create multiple accounts with the same email)
registering multiple sites on the same account, and injecting some JavaScript on each site to send the domain to Goatcounter is it's prefixed before each path (this is explained in the documentation)

This is all described in more detail in the documentation. I think I have a small preference for option 2. It's worth noting that Goatcounter has an API from which we could fetch the data it collects to store it and display it the way we want in a Panel/Lumen app.

Goatcounter will send page views even on the dev sites (e.g. ), this can be prevented in javascript, alternatively, we could not enable Goatcounter in Python in conf.py, depending on the environment built. Or we could just live with that (interestingly if we choose option 2. above we'll actually be able to check whether there isn't too much traffic on the dev sites).

Potential future use cases:

Panel apps could send "page views" to Goatcounter, see from app backends or other sources

ii. registering multiple sites on the same account, and injecting some JavaScript on each site to send the domain to Goatcounter is prefixed before each path (this is explained in the documentation)

I'm in favor of this option as well.

Goatcounter will send page views even on the dev sites

I highly doubt they get much traffic, and it would be all from us, right? I'd say just live with it, especially if we can enable pseudo-unique visitor counting.

and it would be all from us, right?

I know at some points users found Panel's dev site on Google. I just tried and didn't, so maybe we've done something to fix that. Agree it's not so important in the end.


✨[Feature] Automatic type promotion for elementwise ops in FX

Context
Currently, elementwise operators are not automatically type-promoted in FX in the same way they are in TS. This leads to bugs such as #1995, where the types are mismatched and TensorRT throws an error.
Feature Proposal
Using the TS type-promotion code as a starting point:
https://github.com/pytorch/TensorRT/blob/82631fa5d130745bb14766e05f6b20758dfcff64/core/conversion/converters/converter_util.cpp#L72-L78
Implement a similar type-promotion scheme pointing to the converter_reorg_elementwise branch, here:
https://github.com/pytorch/TensorRT/blob/546f9756106425958fca1c94dff25cd83aa77266/py/torch_tensorrt/fx/converters/impl/elementwise/base.py#L40-L48

Addressed in #2055, #2070


Mode verbose for commands

Hi,
I added a flag --verbose for the command. It allows us to use some packages for metrics ex: cqc to have an overview when we commit/push etc. Or any command you want to use to display a message via a hook.
This is not the same as debug, you can use them at the same time but debug is for listr-verbose, --verbose is only for commands inside the list.
Mode debug

Mode Verbose

Mode debug + verbose

I saw this PR https://github.com/okonet/lint-staged/pull/319 but didn't test it as it's closed.
Voilà

It fails with AppVeyor, I can't replicate the issue with the same version of node

I would vote against this. I think it leads to confusion between debug and verbose modes. The verbose info could be logged using husky:
{
  // ...
  "scripts": {
    "precommit": "lint-staged && cqc $(git diff --name-only --cached)"
  }
}

@sudo-suhas Yes we can. But imho it would be an interesting feature to be able to see stdout for commands.

For that, we could just check if the renderer is verbose.

cf the screenshot inside the PR, the renderer verbose is available with --debug, which is not what this flag provides (--verbose).
They don't display the same thing, but yeah maybe if we use --debug we can set verbose to true as it makes sense.

To clarify, I was referring to passing the renderer in lint-staged options.

Closing as old an probably not compatible. The PR https://github.com/okonet/lint-staged/pull/852 will add a verbose option that always shows task output, even when they succeed.


Cleanup day 8 solution

What type of PR is this?

[x] Enhancement (new features, refinement)
[x] Refactor

What this PR does / why we need it:
Which issue(s) this PR fixes:

Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

Codecov Report

Merging #31 (67f6e70) into master (3395a36) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master      #31   +/-   ##
=======================================
  Coverage   78.68%   78.68%
=======================================
  Files          14       14
  Lines         455      455
=======================================
  Hits          358      358
  Misses         89       89
  Partials        8        8

Impacted Files
Coverage Δ

internal/day8/day8.go
78.33% <100.00%> (ø)

Continue to review full report at Codecov.

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


Add ufw firewall

Adds ufw with these rules:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
Anywhere                   ALLOW IN    <IP_ADDRESS>/24
Anywhere                   ALLOW IN    <IP_ADDRESS>/16
6443                       ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
443                        ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
6443 (v6)                  ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
443 (v6)                   ALLOW IN    Anywhere (v6)

fixes #36

@gadelkareem thx for your contribution!
I'm not sure if we should include the FW (and the define rules) in core or define it as add-on. IMHO rules that we are going to add, where we expose only few public port can prevent someone to use the config without alterate each machine manually, eg when exposed service use non 80 / 443 port, this is a good default only for web tool, but some other services should need other port that was closed (eg: if user want to expose a stateful service like MySQL, InfluxDB, Postgres, Cassandra, ...).

I agree! I will do another PR

added in #228


Default CI Java Version to Java 11, run tests on 8, 14 and 17

Coming from https://github.com/opensearch-project/opensearch-plugins/issues/64, default CI Java version to 11 (LTS), and run tests on 8, 14 and 17.

[x] Change the default Java version for CI in GitHub actions from 14/15 to 11 (LTS).
[ ] Add Java 8, 14 (used before), and 17 (next LTS) to the CI matrix.
[x] Document Java versions in DEVELOPER_GUIDE.md.

Added JDK 11 and set it as a default version in DEVELOPER_GUIDE.md.
For JDK 8 and JDK 17 there are some issues and we don't solution yet. For JDK 8 it's OS, seems it has been compiled with JDK 9:
org/opensearch/gradle/plugin/PluginPropertiesExtension has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
https://github.com/martin-gaievski/k-NN/runs/4945583353?check_suite_focus=true
for JDK 17 higher gradle version is required, I've tested with 7.3.3. It fails with
Error: Exception in thread "main" java.lang.NoClassDefFoundError: org/gradle/cli/CommandLineParser
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:43)
https://github.com/opensearch-project/k-NN/runs/4957612326?check_suite_focus=true
I've tried multiple things locally - different gradle versions, generating new gradle wrapper, setting java language level for tooling etc., but no success.

There is a related issue for OpenSearch in relation to JDK 8 and 17 Remove support for Java 8, add support for Java 17. KNN is blocked until that issue is addressed by the OpenSearch team.

Merged #2025 to address JDK 8 and JDK 17 requirements. Change is for OpenSearch 2.0 release, and not going to be ported to 1.x. As k-NN follows OpenSearch release path/versions, this means build issues for k-NN 1.x still remain unresolved. Suggesting to close this issue or move it to 2.0 release.

@martin-gaievski Care to pitch in a comment for https://github.com/opensearch-project/opensearch-plugins/issues/110#issuecomment-1032811256 pls?

@martin-gaievski for 2.0.0, the upgrade to Gradle 7.x is required, I could submit the PR for k-NN, wdyt?

@reta sure Andriy, we haven't released knn 1.3 yet, so current main is gonna be used for this. Let me discuss with the team if we can cut off 1.3 release branch soon, if so I'll put an update here and you can continue with PR.

Thanks @martin-gaievski ! Sure, please take you time!

@reta please go ahead with the PR. For knn we have created branch 1.x that will serve for any 1.x releases, so main is good to go for 2.x changes.

Solve all issues related to 1.3 knn release, closing this one


Bug: blockquote property not being applied in MarkdownBody  widget

Describe the bug
The blockquote property is not being applied in the MarkdownBody widget. All other TextStyle properties appear to be working, and so are the blockquotePadding and blockQuoteDecoration.
How to reproduce
Steps to reproduce the behavior:

Build a MarkdownBody widget
Specify the blockquote property to something like TextTheme.of(context).bodyText2.copyWith(color: Colors.red)
Note that the text does not, in fact, become red.

Expected behavior
Text should become red in the above example.
Additional context
Only tested on flutter web

Hi @guilhermepata
Thanks for filing the issue, I can reproduce blockquote style doesn't have any affect, i tried changing font size and text color, nothing happens

minimal code sample
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import '../shared/markdown_demo_widget.dart';

// ignore_for_file: public_member_api_docs

const String _data = '''
# Minimal Markdown Test
---
This is a simple Markdown test. Provide a text string with Markdown tags
to the Markdown widget and it will display the formatted output in a scrollable
widget.

> This is my block quote

## Section 1
Maecenas eget **arcu egestas**, mollis ex vitae, posuere magna. Nunc eget
 aliquam tortor. Vestibulum porta sodales efficitur. Mauris interdum turpis
 eget est condimentum, vitae porttitor diam ornare.

### Subsection A
Sed et massa finibus, blandit massa vel, vulputate velit. Vestibulum vitae
venenatis libero. ***Curabitur sem lectus, feugiat eu justo in, eleifend
accumsan ante.*** Sed a fermentum elit. Curabitur sodales metus id mi ornare,
in ullamcorper magna congue.
''';

const String _notes = """
# Minimal Markdown Demo
---

## Overview

The simplest use case that illustrates how to make use of the
flutter_markdown package is to include a Markdown widget in a widget tree
and supply it with a character string of text containing Markdown formatting
syntax. Here is a simple Flutter app that creates a Markdown widget that
formats and displays the text in the string _markdownData. The resulting
Flutter app demonstrates the use of headers, rules, and emphasis text from
plain text Markdown syntax.

## Usage

The code sample below demonstrates a simple Flutter app with a Markdown widget.

import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
const String _markdownData = """
Minimal Markdown Test

This is a simple Markdown test. Provide a text string with Markdown tags
to the Markdown widget and it will display the formatted output in a
scrollable widget.
Section 1
Maecenas eget arcu egestas, mollis ex vitae, posuere magna. Nunc eget
aliquam tortor. Vestibulum porta sodales efficitur. Mauris interdum turpis
eget est condimentum, vitae porttitor diam ornare.
Subsection A
Sed et massa finibus, blandit massa vel, vulputate velit. Vestibulum vitae
venenatis libero. Curabitur sem lectus, feugiat eu justo in, eleifend
accumsan ante. Sed a fermentum elit. Curabitur sodales metus id mi
ornare, in ullamcorper magna congue.
""";
void main() {
runApp(
MaterialApp(
title: "Markdown Demo",
home: Scaffold(
appBar: AppBar(
title: const Text('Simple Markdown Demo'),
),
body: SafeArea(
child: Markdown(
data: _markdownData,
),
),
),
),
);
}
""";

class MinimalMarkdownDemo extends StatelessWidget
    implements MarkdownDemoWidget {
  const MinimalMarkdownDemo({Key? key}) : super(key: key);

  static const String _title = 'Minimal Markdown Demo';

  @override
  String get title => MinimalMarkdownDemo._title;

  @override
  String get description => 'A minimal example of how to use the Markdown '
      'widget in a Flutter app.';

  @override
  Future<String> get data => Future<String>.value(_data);

  @override
  Future<String> get notes => Future<String>.value(_notes);

  @override
  Widget build(BuildContext context) {
    return  Markdown(
      data: _data,
      styleSheet: MarkdownStyleSheet.fromTheme(Theme.of(context)).copyWith(
        blockquote: const TextStyle(color: Colors.red, fontSize: 32),
        blockquotePadding: const EdgeInsets.all(100),
      ),
    );
  }
}

stable
master

❗
❗

Check flutter doctor -v outputs for each channel below

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 12.0 21A5506j darwin-x64, locale en-GB)
    • Flutter version 2.2.3 at /Users/tahatesser/Code/flutter_stable
    • Framework revision f4abaa0735 (9 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/tahatesser/Code/SDK
    • Platform android-31, build-tools 30.0.3
    • ANDROID_HOME = /Users/tahatesser/Code/SDK
    • Java binary at: /Users/tahatesser/Code/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode-beta.app/Contents/Developer
    • Xcode 13.0, Build version 13A5212g
    • CocoaPods version 1.10.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version 2020.3)
    • Android Studio at /Users/tahatesser/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7621141/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] VS Code (version 1.59.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.26.0

[✓] Connected device (3 available)
    • Taha’s iPhone (mobile) • 00008020-001059882212002E • ios            • iOS 15.0
    • macOS (desktop)        • macos                     • darwin-x64     • macOS 12.0 21A5506j darwin-x64
    • Chrome (web)           • chrome                    • web-javascript • Google Chrome 93.0.4577.63

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 2.6.0-1.0.pre.170, on macOS 12.0 21A5506j darwin-x64, locale en-GB)
    • Flutter version 2.6.0-1.0.pre.170 at /Users/tahatesser/Code/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4069c6355b (8 hours ago), 2021-09-03 02:11:05 -0400
    • Engine revision d6f6a0fe90
    • Dart version 2.15.0 (build 2.15.0-69.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/tahatesser/Code/SDK
    • Platform android-31, build-tools 30.0.3
    • ANDROID_HOME = /Users/tahatesser/Code/SDK
    • Java binary at: /Users/tahatesser/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7621141/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.0)
    • Xcode at /Applications/Xcode-beta.app/Contents/Developer
    • CocoaPods version 1.10.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Users/tahatesser/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7621141/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] Android Studio (version 2020.3)
    • Android Studio at /Users/tahatesser/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7583922/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] VS Code (version 1.59.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.26.0

[✓] Connected device (3 available)
    • Taha’s iPhone (mobile) • 00008020-001059882212002E • ios            • iOS 15.0 19A5340a
    • macOS (desktop)        • macos                     • darwin-x64     • macOS 12.0 21A5506j darwin-x64
    • Chrome (web)           • chrome                    • web-javascript • Google Chrome 93.0.4577.63

• No issues found!

✅: No Issue ❗: Issue reproduced

I’m having this same issue (in late 2022). Is there any hope of getting this fixed?

Still facing this issue in November 2022. Any fix?

EDIT: I think I was able to figure out the solution. In the builder.dart file of the library, I changed:
style: _isInBlockquote ? styleSheet.blockquote!.merge(_inlines.last.style) : _inlines.last.style,
to:
style: _isInBlockquote ? _inlines.last.style!.merge(styleSheet.blockquote!) : _inlines.last.style,

Thanks for your help. I switched to a different package that works really well and is actively maintained: https://pub.dev/packages/markdown_viewer
The developer even added some enhancements that I requested. 😄

The same issue exists for Blockquote in the Markdown widget if a styleSheet property is provided, such as:
Markdown(
    styleSheet: MarkdownStyleSheet(
        blockquote: TextStyle(
            fontStyle: FontStyle.italic,
            color: Colors.red,
        ),
    ),
);

The TextStyle doesn't apply at all.

This is definitely still an issue. Changing the builder.dart file of the library doesn't feel like a good permanent solution.
Is there any chance this will get looked at? or should we change to a different package if we need this to be fixed?

any updates?
In my case, the blockquote style is ignored and it looks like that blockquote style always matched the p style and ignore the one I gave it. I do not know what is going under the hood but It is extremely annoying having the blockquote text size match the text size of the p, Anyway the above approach worked for me waiting one openning a pull request to solve this, also it seemes like this package did not get any updates 3 months ago it would be nice to have it support the latest flutter (3.10.x).

@cliftonlabrum @patakihara @TahaTesser
UPDATE: I think I was able to figure out the solution. In the builder.dart file of the library, I changed:
style: _isInBlockquote ? styleSheet.blockquote!.merge(_inlines.last.style) : _inlines.last.style,
to:
style: _isInBlockquote ? _inlines.last.style!.merge(styleSheet.blockquote!) : _inlines.last.style,

@darshankawar This still doesn't seem to work in the latest version.

It ignores the quote style.
It ignores the codeblockAlign value.

This still doesn't seem to work in the latest version.

Yes you have to fix it manually.
Check @Pranoy1c fix.

Omg! Please fix it. it is foundation feature


Xiaomi Mi Smart Computer Monitor Light Bar 1S (MJGJD02YL) uses color picker instead of color temperature slider

Device model / 设备型号
yeelink.light.lamp22
Component version / 插件版本
0.7.7
HA core version / HA版本
2023.3.1
Integrated mode / 集成方式
Token
The problem / 问题详情
Today I tried to get the Xiaomi Mi Smart Computer Monitor Light Bar 1S (MJGJD02YL) working with Home Assistant and first found the other, already deprecated, component from you named: hass-miio-yeelink.
I set it up and after that I found this component here and set it up again with the "host/token" option. First I tried the auto mode, but with that I couldn't even switch the lamp on/off.
There is only one problem with the new component, it displays a color picker instead of the color temperature slider.

This is a problem, because this lamp has no color support and so the adjustment doesn't work.
While checking the entities, I found out that the new component is setting "color_mode" to "brightness" instead of "color_temp".
I "fixed" it with the following change in "customize.yaml", but perhaps you can change it directly in the setup code.
light.light.yeelink_lamp22_XXXX_light:
color_mode: 'color_temp'
And it looks like this is no complete fix. If I go in the old component in the color temperature screen, it directly displays the current color temperature and the bar is in the correct position. If I do it in this component, the slider and color temperature is only displayed, when I click somewhere on the bar. And additionally the change of the color temperature is a lot smoother on the older component. Here it takes longer, the bar and current color temperature label go away for 1 to 2 seconds and then pop in.
Entity attributes / 实体属性
light.yeelink_lamp22_XXXX_light
min_color_temp_kelvin: 2702
max_color_temp_kelvin: 6493
min_mireds: 154
max_mireds: 370
effect_list: Reading, Office, Leisure, Warmth, Computer
supported_color_modes: brightness, color_temp, onoff
color_mode: brightness
brightness: 64
model: yeelink.light.lamp22
lan_ip: XXX.XXX.XXX.XXX
mac_address: XX:XX:XX:XX:XX:XX
entity_class: MiotLightEntity
miot_type: urn:miot-spec-v2:device:light:0000A001:yeelink-lamp22:1:0000C802
light.on: true
light.brightness: 25
light.color_temperature: 2703
light.default_power_on_state: true
light.mode: 0
yl_light.save_state: true
yl_light.delay_time: 15
yl_light.delay_off_enable: false
yl_light.double_click_enable: false
yl_light.double_click: 1
yl_light.long_press_enable: false
yl_light.scene_mode: 0
yl_light.long_press_one: 9
yl_light.long_press_two: 8
yl_light.long_press_three: 5
yl_light.work_minutes: 45
yl_light.break_minutes: 10
yl_light.pomodoro_enable: false
yl_light.mode_one_bright: 50
yl_light.mode_one_ct: 4000
yl_light.mode_two_bright: 100
yl_light.mode_two_ct: 2700
yl_light.mode_three_bright: 30
yl_light.mode_three_ct: 5000
yl_light.mode_four_bright: 60
yl_light.mode_four_ct: 3000
yl_light.ble_paired_mac: XX:XX:XX:XX:XX:XX
state_updater: lan
friendly_name: Xiaomi Miot light
supported_features: 36

light.xiaomi_yeelink (old)
min_color_temp_kelvin: 2702
max_color_temp_kelvin: 5714
min_mireds: 175
max_mireds: 370
supported_color_modes: color_temp
color_mode: color_temp
brightness: 64
color_temp_kelvin: 2710
color_temp: 369
hs_color: 28.373, 65.405
rgb_color: 255, 167, 88
xy_color: 0.524, 0.388
model: yeelink.light.lamp22
lan_ip: XXX.XXX.XXX.XXX
mac_address: XX:XX:XX:XX:XX:XX
firmware_version: 2.1.7_0020
hardware_version: esp32
entity_class: YeelightEntity
power: on
nl_br:
delayoff: 0
bright: 25
ct: 2703
friendly_name: Xiaomi Yeelink
supported_features: 3

Home Assistant Logs / 系统日志
No response

supported_color_modes: brightness, color_temp, onoff
color_mode: brightness

It can be seen from the entity attributes that the current color_mode should be brightness, so I think the card display error is caused by a bug in the HA frontend.

yeah, but who sets the color_mode to brightness is this coming from this component or HA? Because the correct setting should be color_temp if the device supports it or not?

who sets the color_mode to brightness is this coming from this component or HA?

This component.

Because the correct setting should be color_temp if the device supports it or not?

Yes.

Ok, so is there a way for you to change it or do you need more input from me? Because when I change the color_mode to color_temp, like I mentioned, I have a borked color temperature slider:

It is not displaying the label with the current color temperature and the current slider position, until I click somewhere on the bar and the adjustment of the color temperature is a bit "choppy".
Or do you think that color_mode: brightness is not the issue that it is displaying the color picker instead of the color temperature slider, when I open the card and click on the "Change color" icon?
I mean, I have a brightness slider, when I click on the card, but "Change color" is broken and all of my other lamps (from other components) with color temperature feature have color_mode: color_temp set and the slider is working like a charm.

Hello everyone. I also faced the problem of incorrect display of the slider color temperature.
I checked all the light entities that have color temperature adjustment. All have supported_color_modes: color_temp (without brightness and onoff).
Using file editor, I removed brightness and on off from this attribute in the core.entity_registry file. After that, the entity began to work as it should.

Try master branch.

Thank you very much for you effort, it is fully fixed for me now.


Plural patch

Q
A

Is bugfix?
✔

New feature?
❌

Breaks BC?
❌

Fixed issues

@samdark Done. Also added the missing entry for previous release.


StartJVM and other upgrading issues with 0.7.0

A few common issues have appeared in upgrading between JPype 0.6.3 and 0.7.0.  Some users have simply been rolling back to the 0.6.3 version, but that has a number of issues that could result in segmentation faults,
To help in making the transition here are a few of the most common problems.
startJVM
The previous version was very forgiving with regard to options passed to the JVM.  As a result mistakes such as a bad -Djava.clss.path= would result in result in difficult to spot errors.  To solve this issue the variable ignoreUnrecognized was exposed with the default state False.  This change has exposed bugs in modules which were passing options that are not accepted by the users JVM.  Running with ignoreUnrecognized=True would cause unnecessary bugs for future developers, while running with it False would rightly catch potential errors in existing modules.
Solution
Adding ignoreUnrecognized=True to the call to startJVM will make the JVM proceed even when the option is not supported by the JVM.
Deprecated StringConversion
Users will see a deprecation warning with regarding convertStrings.  This is a harmless warning indicating that the Python module needs to select a policy regarding string conversions.  In previous versions Java strings were automatically converted to Python strings.  This was a performance issue and made portions of the Java API difficult to use.  The default is still True as it was in 0.6.3 but will be changing starting from version 0.8.  Thus Python libraries should select a policy during the transition period.
Solution
If the previous default behavior of converting strings is desired, then convertStrings=True should be added to the startJVM call.
Direct access to private fields
Due to a bug in 0.6.3 private variables were exposed as part of the interface.  Also 0.6.3 had a default class customizer which automatically created a property to get and set if the methods matched a Java bean pattern.  This property customizer was loaded late after many common java.lang classes were already loaded, and was not retroactive thus only user loaded classes that happened after initializer would have the customization.  The private variable bug would mask the property customizer as the property customizer was not to override fields.  Some libraries were unknowingly accessing private variables assuming they were using the property customizer.
The customizer was both unnecessary and resulted in frequent errors for new programmers.  The buggy behavior has been removed and the problematic property customizer has been disable by default in 0.7.
Solution
Add lines to the module to enable the old property behavior.  But this will not reenable the previous buggy access to private variables.  Thus code that was exploiting the previous behavior which bypassed the getter/setter of java will need to use the reflection API.
To enable the property customizer, use
try:
   import jpype.beans
except ImportError:
   pass

Accessing Exceptions
Prior to 0.7, JPype exceptions were double wrapped.  An outer wrapper as a Python exception contained an internal Java exception.  The previous version used JException to catch this pattern, but some Python modules did not use this pattern by instead tested the exception arguments directly.
Solution
It is best to convert these sections to use the JPype 0.7 API in which a standard try except structure can be used to catch Java exceptions.  The exact conversion for previous exception depends on the formulation that was used.  Catching exceptions by catching or rethrow and catching with JException should work in both versions.
Internal changes
The underlying structure of JPype made considerable changes between 0.6 and 0.7 series.  Modules which were making undocumented access to the internal module will likely be busted.  Documentation of these internal changes is in Changelog-0.7.rst.  Please submit a issue if there does not appear to be a good mapping between the old and the new api.

Looks like this issue has run its course?
FWIW, I added a PR in https://github.com/jpype-project/jpype/pull/1062 which makes the startJVM signature even more explicit.

Yeah it is likely safe to close this one.


Various fixes for date time inputs

I get TypeError: undefined is not an object (evaluating 'date.format') when the date picker shows, not sure why db.show is also listened before, from their documentation, "show" event does not have a "date" object.
The second commit allows the deletion of the date, when the date is deleted from input, the date object is false, thus there's no format.

Does this fix #4?

Also, please rebase and I'll merge this when the build passes here.

@lowjoel  Yes it will fix #4
Thanks for helping fix the building matrix, now the tests passed!


Info: v2 WIP version available on Master

A WIP version of v2 is now on master. It includes

Graph based path finding
Partial paths

It also uses actual numbers to feed the algorithm. So a node has a position, and an edge has a max speed at which you can traverse it. So if two nodes are connected by an edge and are 120km a part, and the edge has a speed limit of 60km/h, the cost of traveling between these two nodes is 2 hours. This will hopefully make it easier for the end-user to construct graphs that work well for the real world.
As of yet the v2 version only supports graphs, while v1 only supports grids. I'm thinking of clever and fast ways to marry the two, with an interface that looks similar to v1. But in the end it might be simpler to have two different approaches. Who knows :).
V2 also contains a brand new viewer, which is also very much WIP:

And released 💃


Update sbt-scoverage to 1.6.0

Updates org.scoverage:sbt-scoverage from 1.5.1 to 1.6.0.
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 @scala-steward in the comments below.
Have a fantastic day writing Scala!

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

labels: semver-minor

Codecov Report

Merging #24 into master will decrease coverage by 48.52%.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           master   #24       +/-   ##
========================================
- Coverage   48.52%    0%   -48.53%
========================================
  Files           1     1
  Lines          68    68
  Branches        4     1        -3
========================================
- Hits           33     0       -33
- Misses         35    68       +33

Impacted Files
Coverage Δ

.../main/scala/io/circe/bson/BsonCodecInstances.scala
0% <0%> (-48.53%)
:arrow_down:

Continue to review full report at Codecov.

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


[Q] How to delete Artifact, that might now have finished uploading?

Let's say that I have a list of artifacts that I created and logged, but some of them are obsolete and should be deleted (as I only want to keep track of top 3). How should I delete such an Artifact, given that they might not have finished uploading, by the time I need to delete them? Do I have to call wait() or is there perhaps a better way to handle this?
I want to slightly modify WandbLogger in Lightning, but this blocks me and I really want to do it properly.
I appreciate any help!

Hello @janpawlowskiof !
artifact.wait() is a great way to handle this. Like you said, deleting an artifact while it is uploading is problematic as it can cause the artifact not to be deleted or throw an error, thus stopping your training.

Thanks for your response!
Just to confirm that I'm not missing anything: So at the moment there is no way to cancel artifact that is being uploaded?

As of right now, there is no safe way to cancel an artifact that is being uploaded. Deleting it while being uploaded may cause errors as the artifact would still be population on the UI.

Thanks! I guess that closes this issue. Perhaps this would make for a worthy feature request? I don't know how feasible this would be to implement.

I can certainly make a feature request for you! However, I will let our Engineers decide on the feasibility/plausibility of the feature.

WandB Internal User commented:
rsanandres-wandb commented:
I can certainly make a feature request for you! However, I will let our Engineers decide on the feasibility/plausibility of the feature.


Fix: Use tag when requiring mockery/mockery

This PR

[x] uses a tag when requiring mockery/mockery
[x] fixes a failing test

Thank you, @chartjes!


Relax duplicate-kerning checks

Now that https://github.com/unified-font-object/ufoLib/pull/21 is merged, we should update our checks as well.
Ideally, we should call defcon validator and only "resolve" the pairs that defcon is going to barf on.
Alternatively, hopefully https://github.com/typesupply/defcon/issues/38 will be fixed.

So, what to do if there is ambiguity? Should glyphs2ufo crash? Just warn? Not check for conflicts at all?

I think glyph2ufo should warn and generate equivalent of what Glyphs generates.  Now, recently, we heard from Monotype that different versions of Glyphs are inconsistent as to what effectively they generate.

Could you provide examples. I didn't change the kerning code in a long time so I'm courios what difference that might be.

Could you provide examples. I didn't change the kerning code in a long time so I'm courios what difference that might be.

I'll try to see if I can get examples from them.

So, question at this point is, if there is a glyph0-class1 and a class0-glyph1 that both apply to the same pair glyph0-glyph1, and the two pairs have different kern values, and there is no kern pair defined for glyph0-glyph1, then which kern value wins in the binary generated by Glyphs?

So, question at this point is, if there is a glyph0-class1 and a class0-glyph1 that both apply to the same pair glyph0-glyph1, and the two pairs have different kern values, and there is no kern pair defined for glyph0-glyph1, then which kern value wins in the binary generated by Glyphs?

@schriftgestalt Do you happen to know this off the top of your head?  Can you document it?  Monotype is telling us "you should do whatever Glyphs does, as that's what designers see."

Here's is a small test.
Situation 1
Groups
@A = [A a];
@V = [V v];

Kerning
@A @V -250
@A v -100
a @V 100

Result in FEA
lookup GPOS_LOOKUP_00000
{
    pos \A \v <0 0 -100 0>;
    pos \a \V <0 0 100 0>;
    pos \a \v <0 0 100 0>;
 subtable;
    pos @A @V <0 0 -250 0>;
} GPOS_LOOKUP_00000;

Result in text
When the text is AVAvaVav, the result in both Glyphs and HarfBuzz is:
A V -250
A v -100
a V 100
a v 100

Situation 2
Groups
@A = [A a];
@V = [V v];

Kerning
@A @V -250
@A v -100
a @V 100
A @V -400

Result in FEA
lookup GPOS_LOOKUP_00000
{
    pos \A \V <0 0 -400 0>;
    pos \A \v <0 0 -400 0>;
    pos \a \V <0 0 100 0>;
    pos \a \v <0 0 100 0>;
 subtable;
    pos @A @V <0 0 -250 0>;
} GPOS_LOOKUP_00000;

Result in text
When the text is AVAvaVav, the result in both Glyphs and HarfBuzz is:
A V -400
A v -400
a V 100
a v 100

Thanks @twardoch  incredibly useful!  Can you contribute your .glyphs file to the project to add as a test?
So, it's either that the glyph-class wins, or that it's arbitrary based on what is sorted after what.  Can you investigate a bit more?  Perhaps because '@' sorts before the letters, the group-glyph is always processed before glyph-group?  Can you reject that assumption?  Using .notdef perhaps?
I wish @typesupply accepted my suggestion to make glyph-class override class-glyph in UFO, but he didn't like it.

I've amended my reply above with another situation, and added a ZIP with the test files.

For the AV text pair, it seems that Glyphs goes in this order. If it finds a match, it takes it, if not, it continues:

A V
A @V
@A V
@A @V

Which is actually logical — for any text pair, it first tries to find the “most specific match” for the 1st glyph in the pair, and then, the most specific match for the 2nd glyph in the pair.
So it looks to me that the generalized order of processing is:

glyph1 glyph2
glyph1 @group2
@group1 glyph2
@group1 @group2

I wish @typesupply accepted my suggestion to make glyph-class override class-glyph in UFO, but he didn't like it.

I'm still thinking! I have a day job and a ton of code stuff to think about.

Which is actually logical — for any text pair, it first tries to find the “most specific match” for the 1st glyph in the pair, and then, the most specific match for the 2nd glyph in the pair.

That's how I logicalized it to myself as well ;)

I wish @typesupply accepted my suggestion to make glyph-class override class-glyph in UFO, but he didn't like it.
I'm still thinking! I have a day job and a ton of code stuff to think about.

Great to know!  Thanks.  Just to clarify, when I file issues, it's to document them.  By no means feel like you have to fix it.  If you agree on principle, one of us will happily send a PR.

I had a look at the code.
It goes through all pairs in the order you see in the kerning panel. What it does is to produce two dicts, one with the class to class kerning and one with the glyph to glyph pairs (and flattened classes if needed).
In case of AV2, it first adds the pairs A v -100 and a v -100 from the @A v pair you see in the .glyphs file. Then it parses the rest of the list and those praise overwrite the once already in the list. So the last in the list wins.

Thanks @schriftgestalt!  So the order is significant after all.  I think we can implement this.

Yeah. So, @schriftgestalt, would you say that in terms of FEA code generation, you’d do the following:

Expand all “class-to-glyph” pairs and store into a flat list.
Expand all “glyph-to-class” pairs and add to the previous list, overwriting entries where both glyphs are the same.
Take all “glyph-to-glyph” pairs and add it to the previous list, overwriting entries where both glyphs are the same. Write the result into the 1st subtable.
Write all class-to-class pairs in the 2nd subtable.

Right?

It goes through all pairs in the order you see in the kerning panel.

So I think the question is, what is that order?  Is it plain sorted list?

Yeah. So, @schriftgestalt, would you say that in terms of FEA code generation, you do the following:

Expand all “class-to-glyph” pairs and store into a flat list.
Expand all “glyph-to-class” pairs and add to the previous list, overwriting entries where both glyphs are the same.
Take all “glyph-to-glyph” pairs and add it to the previous list, overwriting entries where both glyphs are the same. Write the result into the 1st subtable.
Write all class-to-class pairs in the 2nd subtable.
Right?

No. IT goes through the list of pairs and if it finds a pair that includes on glyph, and a class, it flattens the class and puts all pairs in the glyphs pair list.
The two list are actually nested dicts. That way new values overwrite old once.

So I think the question is, what is that order? Is it plain sorted list?
The kerning is stores in an 'Ordered Dict'. So it will use the order as it is in the file. There is no ordering on kern feature generation or anywhere else.

Hmm, I’m looking at it in Glyphs, and I don’t know how Glyphs sorts the Kerning panel. I mean, first it sorts the “1st side” (groups or glyphs) somehow, and within the “1st side” entries, it makes “2nd side” entries (groups or glyphs). But I have no idea how Glyphs determines the order of sorting within each side.
I just arrived at this:

Doesn’t matter so much how I did it and whether it makes logical sense — it’s very unclear to me what is the order by which this hierarchy is arranged. I hope @schriftgestalt can clarify. :)

The order is like this:
@A V -400
@A @One -100
@V @A -10
@one @one -44
@one @One -66
...

This may be off-topic, but where does this order come from? :)

Mostly from the order of adding the pairs.

Ah, OK. That seems consistent with my experiment, thanks!


add policy to credScan demo

The second part of the PR. Add policy.

Closing this PR.
You should move this PR to your repo.


Update sbt-scoverage to 1.9.0

Updates org.scoverage:sbt-scoverage from 1.8.2 to 1.9.0.
GitHub Release Notes - Version Diff
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!

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

labels: sbt-plugin-update, semver-minor

Coverage decreased (-2.7%) to 92.073% when pulling 9d56ea444f9d229c61c704e362344121903c7bf2 on scala-steward:update/sbt-scoverage-1.9.0 into ca10c64b98af9973d1b830d6a180d8b2c8898d98 on iheartradio:master.


Migrating maintenance logic to comp-func

This commit removes most of the logic for handling the maintenance. It now resides in the comp-funcs.
This introduces the config key for composition functions, as we need to pass some external information into the function.
Checklist

[x] The PR has a meaningful title. It will be used to auto generate the
changelog.
The PR has a meaningful description that sums up the change. It will be
linked in the changelog.
[x] PR contains a single logical change (to build a better changelog).
[x] Categorize the PR by adding one of the labels:
bug, enhancement, documentation, change, breaking, dependency
as they show up in the changelog.
[x] Link this PR to related issues or PRs.

P.S.: I hope we are using the config resource properly. I read a bit the documentation again and it seems ok for npow.

If they don't change it massively in the future then I don't see a problem. But on the other hand, it would not be the first Crossplane Composition Functions feature we misuse a slight bit.


Update build-push-action to v6

I don't know how but the manifest issue has mysteriously fixed itself 😭

I don't know how but the manifest issue has mysteriously fixed itself 😭

U got a link to the docs where it discussed what needed to be added as the manifest file?

the issues I found are linked on the issue, entirely possible I'd just fucked something up somehwo

After looking at the links in the attached issues. The manifest file error was caused by temporary errors in the GitHub runners. Seems like if we had just rerun the action that failed it would have succeeded

Well the action didn't fail - the action succeeded and pushed just fine, but when you tried to download the image it would fail. either way seems to be sorted now


runtime: suboptimal size classes

It looks like we're allocating objects to size classes suboptimally.  Here's an example:
size=4864, pages=2
size=5632, pages=3
the 4864 size class can fit 3 objects in a 2-page span. (Pages are 8192 bytes.)
the 5632 size class can fit 4 objects in a 3-page span.
But consider the size 4864+256=5120.  It can also fit 3 objects in a 2-page span.  The space usage for that is better than using the 5632 size class. (5461.3 bytes/obj, compared to 6144 bytes/obj).
So the 4864 size class should be 5120.  Actually, even 4864+2*256=5376 works.
I'm sure there are more examples, this is just the one I investigated first.
@aclements

@dvyukov

Huh. Why didn't https://go-review.googlesource.com/24493/ fix this?

I am smoking crack.  I grabbed the list of size classes before the code from 24493 adjusted them.

Okay. :) I'm good with statically generating the size classes, though. I've always found it a little odd that we do this at runtime (and annoying, since I can't just look at the size class table), and your static generation CL looks like it has some other nice benefits.

Please retain the static sizeclass generation, I think that's a useful
change independant of any cocaine freebase.
On Fri, Oct 28, 2016 at 2:22 AM, Austin Clements<EMAIL_ADDRESS>wrote:

Okay. :) I'm good with statically generating the size classes, though.
I've always found it a little odd that we do this at runtime (and annoying,
since I can't just look at the size class table), and your static
generation CL looks like it has some other nice benefits.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/golang/go/issues/17619#issuecomment-256673386, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAAcA0RJgx1d3pj3TddbWZNjumYN-npKks5q4MGcgaJpZM4KhoMb
.

Yes, please keep the static sizeclass generation! Very convenient.