[BUG] After compiling pyd with pure Python, I can't access properties, but I can access methods.

Describe the bug
I have defined some properties and methods in a class, but after compiling to pyd through cythonize, the object that defines this class, can't access the properties through ,but access the methods.
Code to reproduce the behaviour:
# example code
class DocumentCanvas(QWidget):
    def __init__(self):
        super().__init__()

        self.title_label = QLabel('Document Canvas')
        self.pdf_viewer = PdfViewer()
        self._title_label_property()
        self._document_canvas_layout_property()

    def _title_label_property(self):
        self.title_label.setMinimumHeight(INFOBAR_MIN_HEIGHT)
        self.title_label.setMaximumWidth(INFOBAR_MAX_WIDTH)
        self.title_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.title_label.setStyleSheet('background-color: rgb(227, 227, 227);')

    def _document_canvas_layout_property(self):
        grid_layout = QGridLayout()
        grid_layout.setContentsMargins(0, 0, 0, 0)
        grid_layout.setSpacing(0)
        grid_layout.addWidget(self.title_label,  0, 0, 1, 1)
        grid_layout.addWidget(self.pdf_viewer, 1, 0, 1, 1)
        self.setLayout(grid_layout)

Expected behaviour
No response
OS
WIndows
Python version
Python 3.12.0
Cython version
Cython version 3.0.5
Additional context
No response

Do you get an error message that you could show here? And what is the code that you produce it with?

And where do you import QWidget from? (There's at least 2 sensible options)

py file will be compiled into pyd file code: cythonize -i -3 document_canvas.py.
pyd file is located in the path added to the Python variable PYTHONPATH
use pycharm editor, in the code to call:
from document_canvas import DocumentCanvas
document_canvas = DocumentCanvas()
document_canvas._title_label_property() -> this code can be recognized by pycharm
document_canvas.pdf_viewer -> this code can not be recognized by pycharm, it will prompt that the class DocumentCanvas does not define pdf_viewer
So I would like to know that the properties defined in the class, compiled using cython, can not be accessed normally by the outside?

Here's a more minimal example that doesn't demonstrate the bug
class DocumentCanvas:
    def __init__(self):
        self.pdf_viewer = "TEST"

Compile with cythonize -if3 document_canvas.py
At the command line:
>>> from document_canvas import DocumentCanvas
>>> document_canvas = DocumentCanvas()
>>> document_canvas.pdf_viewer
'TEST'

So this works.
Unfortunately we don't have the information to investigate your full example because you haven't told us:

what is QWidget? As I said before, there are multiple modules you could be importing this from
what is PdfViewer?
Which of these is important to reproducing the bug?

Here's a more minimal example that doesn't demonstrate the bug
class DocumentCanvas:
    def __init__(self):
        self.pdf_viewer = "TEST"

Compile with cythonize -if3 document_canvas.py
At the command line:
>>> from document_canvas import DocumentCanvas
>>> document_canvas = DocumentCanvas()
>>> document_canvas.pdf_viewer
'TEST'

So this works.
Unfortunately we don't have the information to investigate your full example because you haven't told us:

what is ? As I said before, there are multiple modules you could be importing this fromQWidget
what is ?PdfViewer
Which of these is important to reproducing the bug?

Sorry, QWidget -> This is import from PyQt6 library, PdfViewer() is not important for this example, what I want to express is that after cython compilation, after importing the library using PyCharm IDE, the properties defined inside the class are not recognized correctly, but the methods can be recognized, and the functionality is not a problem. The problem is that the IDE will actively report errors, as far as my example above is concerned:

class CanvasDocument(QWidget):
"""Widget canvas for displaying PDFs."""
def init(self):
super().init()
    self.title_label = QLabel('Document Canvas')
    self.pdf_viewer = XQtPdfViewer()
    self._label_property()
    self._layout_property()

def _label_property(self):
    self.title_label.setMinimumHeight(LABEL_BAR_HEIGHT)
    self.title_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
    self.title_label.setStyleSheet('background-color: rgb(227, 227, 227);')

def _layout_property(self):
    grid_layout = QGridLayout()
    grid_layout.setContentsMargins(0, 0, 0, 0)
    grid_layout.setSpacing(WIDGET_SPACING0)
    grid_layout.addWidget(self.title_label,  0, 0, 1, 1)
    grid_layout.addWidget(self.pdf_viewer, 1, 0, 1, 1)
    self.setLayout(grid_layout)

The functionality is fine and works as expected, it's the IDE that can't recognize the attributes in the class and pops up a warning, causing an impact on the development experience.

Unsurprisingly, Python IDEs cannot look into binary extension modules. And you're probably using the PyCharm Community Edition, and not their paid version that support Cython code.
Try using Python annotations in the class, that might help the IDE understand what's going on. There's also work being done to generate .pyi typing stub files for Cython modules (https://github.com/cython/cython/pull/5744), but that's not completed yet.
I'll close this ticket since it's not really a bug in Cython. Cython already goes to great length making this work better than for arbitrary C implemented extension modules.


Need a BDF font library

https://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format

Reference Implementation:
https://github.com/TakWolf/bdffont


Update module docs with new UMD output

This page was removed - ref https://github.com/babel/babel.github.io/issues/485


Groups is now Groups For Business. /shrug.

Discovered this (and fixed access) while helping Joseph and Cindy access the cloud-developers@ archives.

lgtm - I believe "Groups" and "Groups for Business" are two different things, one being basically a superset of the others feature-wise. You can still find both in the list of Apps, one in Core services, the other in Additional (at least on my domain, don't have permissions to see the RtF one)

LGTM


add Docsearch

@hzoo, Following #438,  and the discussion you had by email with Remy from Algolia, here is the docsearch implementation

Awesome!
Also was wondering if anything needs to be done to get keyboard shortcuts working (up and down arrows)

Hm we have a lot of the same settings so if I type API I get

rather than anything under usage

@hzoo The up and down arrow are handled by default, but the yellow highlight was a bit to transparent. It should be better now.
There was a mistake in the docsearch config and the usage pages were not picked up correctly. It should be ok now.
Tell me if it's good for you.

yeah it should be everyhting in https://github.com/babel/babel.github.io/tree/master/docs
looks better now

@maxiloc how does the config work or is that on your end? Was wondering how to get better results if we find there are issues. I'm cool to merge this now though

Since it looks like the top level h1 isn't picked up. Like if I search polyfill I might expect that specific page to show up http://babeljs.io/docs/usage/polyfill

You can have a look at the config here: https://github.com/algolia/docsearch-configs/blob/master/configs/babeljs.json. It's a set of simple rules that are used to crawl the website. You can make PRs if you need or just ping us when you see something that is not optimal and we'll fix it.
We then crawl the site automatically with https://github.com/algolia/docsearch-scraper

Oh ok thanks a lot!
I was wondering given you added
  "start_urls": [
    "http://babeljs.io/docs/",
    "http://babeljs.io/docs/usage/api"
  ],

whether we need to add the rest https://github.com/babel/babel.github.io/tree/master/docs/usage

I tweaked a bit the config the polyfill should appear first now

No we don't need to add it all urls manually. We have http://babeljs.io/docs/usage/api because http://babeljs.io/docs/ is a 404 but we need it to accept all http://babeljs.io/docs/* urls


[3.x] Can't use DDS files w/ TextureArrays or Anisotropic Filtering

Godot version
3.2.1 - 3.4.beta.custom_build.0b4080ba4
System information
Win 10/64 NVIDIA GeForce GTX 1060/PCIe/SSE2
Issue description

DDS files can't have anisotropic filtering enabled automatically because there is no import file. I've worked around the latter by recursing through all materials in the tree and enabling anisotropic filtering at runtime.

DDS files can't be used for TextureArrays, because there is no import file.

3. Can't enable Anisotropic Filtering on TextureArrays (DDS or PNG) because the option wasn't implemented. Addressed in #51402
Steps to reproduce
Click a DDS file, then look at the blank Import tab.  Or click a PNG TextureArray and see no Anisotropic filtering option.
Minimal reproduction project
No response

The DDS loader code is here: https://github.com/godotengine/godot/blob/caf7cbd8715ce549aabf6d9412388558c11fdb51/modules/dds/texture_loader_dds.cpp#L152
https://github.com/godotengine/godot/pull/37847 would resolve the issue with anisotropic filtering.

I discovered EditorPlugin and EditorImportPlugin and was able to get the editor to make dds import files with parameters, in GDscript. I'm currently building out a C++ version to create the DDS import files, and a copy of ResourceImporterLayeredTexture which will do stuff based on import settings:

If it's a texture, it will enable desired flags, but not generate the stex files.
If it's an array or 3D texture, it will load and splice the image as texturelayered does, set flags, and not generate stex files.

I just realized that it doesn't save the anisotropic setting for DDS files in 3.5.2, and found this thread. Is there a way I can resolve this without migrating to 4.x? @TokisanGames would you be willing to share that GDscript import code?

To anyone stumbling across this thread in seach of an answer, here's a script that will force anisotropic filtering on all textures attached to any MeshInstances. You will have to run set_all_flags() on a scene after loading it, to make it work:
extends Node

func set_flags(texture):

	if texture == null: return
	if texture.flags & Texture.FLAG_ANISOTROPIC_FILTER == Texture.FLAG_ANISOTROPIC_FILTER: return

	texture.flags += Texture.FLAG_ANISOTROPIC_FILTER

func set_all_texture_flags(material):

	if material == null: return

	for tex in range(material.TEXTURE_MAX):
		set_flags(material.get_texture(tex))

func set_all_material_flags(mesh):

	for mat in mesh.get_surface_material_count():
		set_all_texture_flags(mesh.get_surface_material(mat))

func find_by_class(node: Node, cls_name: String, result: Array):

	if node.is_class(cls_name) :
		result.append(node)
	for child in node.get_children():
		find_by_class(child, cls_name, result)

func set_all_flags(node: Node):

	var meshes: Array = []
	find_by_class(node, "MeshInstance", meshes)

	for mesh in meshes:
		set_all_material_flags(mesh)


Connection Test error

When 'henry pulse' is run, I get the following error message. To me it seems that the results list empty, although when I check the client id and client secret manually ( https://:19999/api-docs/index.html) , the connection works fine. I hope you have any suggestions.
RUNNING (1/5) Testing Connections:   0% |                                                 |[00:00<?]
Traceback (most recent call last):
File "/usr/local/bin/henry", line 11, in
load_entry_point('henry==0.0.1b2', 'console_scripts', 'henry')()
File "/usr/local/lib/python3.7/site-packages/henry-0.0.1b2-py3.7.egg/henry/cli.py", line 273, in main
result = pulse.run_all()
File "/usr/local/lib/python3.7/site-packages/henry-0.0.1b2-py3.7.egg/henry/commands/pulse.py", line 28, in run_all
result = self.check_connections()
File "/usr/local/lib/python3.7/site-packages/henry-0.0.1b2-py3.7.egg/henry/commands/pulse.py", line 102, in check_connections
for i in results:
TypeError: 'NoneType' object is not iterable

@maxgsoulcycle the config file does expect an access token per host right now. You're meant to set it as an empty string as shown below:
hosts:
  dev_looker:
    access_token: ''
    host: devhostname.looker.com
    id: AbCdEfGhIjKlMnOp
    secret: QrStUvWxYz1234567890

If this doesn't fix it, can you send me your logs from ~/.henry/log/ to<EMAIL_ADDRESS>I am more than happy to work with you to get to the bottom of this.

I'm also getting this error! Is there any progress here? I do have the config file configured correctly. I have a connection set up in my instance. I thought maybe it was looking for multiple connections, so we created a dummy connection. Same error. Would the logs help here @josephaxisa?

@emilieschario The reason you are seeing that error is because you have a .netrc file. It seems that the .netrc file credentials somehow override headers sent through the requests module. The solution for now would be to make sure the two files don't have the same credentials. I am currently collaborating with the creator of Gazer so that we both use the netrc file.

@josephaxisa Thanks so much for clarifying that! I have it working now! Thank you!


Disable default Alt key processing

solve dead block problem when glfw-window is a cross-thread child window.

That's an unusual setup. Why create the child window in another thread?

Well, this problem confuse me long time, I write a game develop tool: http://x-studio365.com, in this case, I need create the glfw window as child of MFC MainFrame in a unique thread.
For detail, please see the reference question: https://social.msdn.microsoft.com/Forums/Windowsdesktop/zh-CN/373bd320-112a-4e55-bab5-74b19fe46bf3/my-mfc-application-will-blocking-when-alt-released-windows-10-rs1-14367-who-can-help-me?forum=vcgeneral

This might be a good candidate for the upcoming platform-specific window hints.

There are now platform-specific window hints.

The F10 also should be disabled.

This can now be controlled by the GLFW_WIN32_KEYBOARD_MENU window hint, which will be included in version 3.4.

well, it doesn't works for me, I think also should add check at WM_SYSKEYDOWN/WM_SYSKEYUP just like follow:
if ((wParam == VK_MENU || wParam == VK_F10) && !window->win32.keymenu) {
    // #Fix: disable system default ALT process, solve dead block problem when glfw-window is a cross-thread child window.
    // if user don't care.
    return 0;
}

Oh, right, you use a child window. GLFW doesn't officially support having child windows, but I will look into whether this addition has any side-effects.

This ties in somewhat with native window handle attachment, when GLFW will need to handle some level of this anyway.

Yeah, glfw child window is works well for me, and I  use parent window to process alt key for shortcuts

I think, it time to glfw official support child window, if you agree, I will send PR to support the feature

@halx99 That sounds potentially interesting. What kind of support for child windows did you have in mind?

At my project, I add a function glfwSetParent before call glfwCreateWindow

I have another mind, change the 2nd parameter of glfwWindowHint to uintpr_t, then add a hint enum: GLFW_HINT_PARENT to store parent handle

I have another mind, change the 2nd parameter of glfwWindowHint to uintpr_t, then add a hint enum: GLFW_HINT_PARENT to store parent handle

PR #2497  created


RFC: Replace Introduction to Numerical Analysis

Problem:
Due to ongoing global events the specialisation Introduction to Numerical Analysis is no longer available,
Duration:
April 24, 2022
Background:
Introduction to Numerical Analysis by HSE on Coursera has been discountinued but it is possible that the Numerical Analysis, IIT Madras may have similar content and could serve the community.
Proposal:
Replace the Introduction to Numerical Analysis.
Alternatives:
An Alternative can be Numerical Analysis.

Good noticing, we should replace this course as it is part of the main curriculum.
There is currently an alternative suggested in the curriculum, MIT's Introduction to Numerical Methods. Unless there is compelling evidence that the IIT Madras course is better than this currently recommended course, OSSU should simply promote the MIT course to our main recommendation.

I've taken a look at the course suggested. I like the fact that the course includes both lectures and a free textbook. The course also includes assignments. Unfortunately, the course does not include feedback on those assignments, either with an autograder or with solution sets.
I also came across this PhD who has put together a youtube series on Numerical Analysis. It does not look like it is paired with practice problems, so not appropriate for OSSU yet.
Another interesting resource for students is the regularly updated course website for MIT's 18.335. These are the materials for the in-person MIT course, so resources like lectures are blocked to outsiders. But there may be material of interest to learners.
As a result, the current alt link, which is for MIT OpenCourseWare version of 18.335, is the most appropriate replacement for the missing course.


Add disable option or a delay for Smart War

Is your feature request related to a problem? Please describe.
- Context:
I used to Stow/Draw Weapons with keybind M4 (back button on a mouse) in order to quickly cancel spells/prebuff, especially in WvW.
I saw that with a pop-up deplay of more than 220ms, I can cancel my spells by quickly pressing on M4 OR holding M4 to select a mount.
- Problem:
With Smart War that automatically mount Warclaw in WvW, I can't no more cancel spells/prebuff because it instant mounts... 😢 (maybe I'm the only who use Gw2Radial like...)
Describe the solution you'd like

Either an disable option checkbox of the feature Smart War (by default enable)
Or a delay setting before automatically mount Warclaw when in WvW

NB: the same problem could be appear underwater but everyone knows that all players don't care about underwater fight 😆
Describe alternatives you've considered
Either change my Stow/Draw Weapons keybind but I'm so used to use it
Unbind In-game Warclaw Keybinds and use the keybind on my keyboard...
Additional context
Setup:

Don't use DX11
Have ArcDPS d3d9.dll with GW2Radial manually installed by renaming the gw2addon_gw2radial.dll with d3d9_chainload.dll (I was stoping to use Add-ons Manager cause it doesn't disable or update great during beta)
Windows 10

Amazing job, thanks, hope you could consider my feature suggestion 😃

Thanks to consider this !! Will test and give u some feedbacks

Thanks for consider my feature for 2.1.2, hope you will find time for that! Enjoy and thanks again for your amazing job for this addon !


Refactor API for clean separation of Mutable vs Immutable access to tree

Refactor API to split functionality into mutable and immutable interfaces. This will enable read only snapshots to previously stored versions, (fixing #68, see also #87). With these changes, it will be possible to load read-only snapshots at previous versions on demand, and only load mutable trees at the most recently saved tree. This should speed up load times for trees with many versions, as we are currently loading each root into memory, which takes a linear number of database calls.
Steps:

Replace Tree with ImmutableTree
Merge VersionedTree and orphaningTree into MutableTree
Move mutable methods on Tree into MutableTree
Move recursive mutation methods on Node into MutableTree
Move recursive lookup methods on Node into ImmutableTree

High level overview of resulting interfaces:
MutableTree

tree *ImmutableTree
Load()
Set(key, value)
Remove(key)
Commit()
Rollback()
GetImmutable(version)
DeleteImmutable(version)

ImmutableTree

root *Node
Has(key)
Get(key)
GetWithProof(key)
GetByIndex(index)
IterateRange(start, end)
GetRangeWithProof(start, end)
Hash()
Size()
Version()

Node

isLeaf()
hash()
getLeftNode()
getRightNode()

Looks good to me, would be happy to help review


Find factorial of a large number in cpp

[GSSoC'21][CPP]Given a big integer like 100 or 1000 it's factorial will be very large and cannot be stored in any of the data types in c++, Create an algorithm to implement it.
hey @tarun26091999  @dheerajkotwani @tarun26091999 @rudrakshi99  am GSSoC'21 participant and doing competitive programming and I can solve this probem in cpp, kindly please assign this issue to me.

I want to work on this issue. Please assign to me.

I want to work on this issue in C++, please assign this to me under GSSoC'21

Please assign this me issue, I will solve this problem using JAVA.

#362


Update default value of StorageMinimalAvailablePercentage

Fixed issue: https://github.com/rancher/longhorn/issues/219

The MinimalPercentage should remain the same (10%) for all the disks. But we should set the default value of ReservedStorage in the root disk to workaround the disk pressure issue for that certain disk.


Allow mulitple welsh errors

What
Added additional translations to due to welsh pluralisation rules:
https://www.unicode.org/cldr/charts/45/supplemental/language_plural_rules.html
How to review
To review you need to generate multiple server side validation errors in welsh that use the error summary component.
This can be done by doing a replace for the dp-renderer in this branch in the dp-frontend-search-controller, setting your 'lang' cookie to 'cy' and going to /allmethodologies?page=74&filter=qmi
With main the page will hang and cause the server to OOM.
With this branch the page will render.
Who can review
Frontend go dev.

Although arguably you don't need the count for 1, 2 or 3 😄


Swamy/added test projects

Codecov Report

Merging #21 (cf8d89a) into main (36aa956) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #21   +/-   ##
=======================================
  Coverage   24.32%   24.32%
=======================================
  Files          10       10
  Lines         222      222
=======================================
  Hits           54       54
  Misses        168      168

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more

Im fine with it


Add a function that emulates cardano native scripts

Description
Add types that mirror the cardano native script capabilities, along with a function for evaluating whether a list of signatories and a valid range satisfies the script.
Motivation
We've decided to use Aiken for the smart contracts we need to build for a recent governance proposal related to yield farming.  As part of that, we essentially wanted to allow equivalent capabilities to Cardano native scripts, to allow for more interesting primitives down the road: multisig yield farming, provable lockups, etc.
This could become a great primitive for embedding in lots of smart contracts and allowing composability.
I have the code written, and @rvcas suggested it might be a good fit for the Standard Library; I know you're pretty careful with what you add to the standard library, so I figured I'd open a ticket, and if there's interest, I can open a PR.
For reference, here's my first pass at the code and tests:
use aiken/interval.{Finite, Interval, IntervalBound}
use aiken/list
use aiken/transaction.{ScriptContext, ValidityRange}

// TODO added to the stdlib in #40
pub fn count(self: List<a>, predicate: fn(a) -> Bool) -> Int {
  list.foldl(self, fn(item, total) { if predicate(item) { total + 1 } else { total }}, 0)
}

type POSIXTime = Int

type OwnerScript {
  Signature { key_hash: ByteArray }
  AllOf { scripts: List<OwnerScript> }
  AnyOf { scripts: List<OwnerScript> }
  AtLeast { required: Int, scripts: List<OwnerScript> }
  Before { time: POSIXTime }
  After { time: POSIXTime }
}

fn satisfied(
  script: OwnerScript,
  signatories: List<ByteArray>,
  valid_range: ValidityRange,
) -> Bool {
  when script is {
    Signature { key_hash } -> list.has(signatories, key_hash)
    AllOf { scripts } ->
      list.all(scripts, fn(s) { satisfied(s, signatories, valid_range) })
    AnyOf { scripts } ->
      list.any(scripts, fn(s) { satisfied(s, signatories, valid_range) })
    AtLeast { required, scripts } ->
      required <= count(scripts, fn(s) { satisfied(s, signatories, valid_range) })
    Before { time } ->
      when validRange.upper_bound is {
        IntervalBound { bound_type: Finite(hi), is_inclusive: False } -> hi < time
        IntervalBound { bound_type: Finite(hi), is_inclusive: True } -> hi <= time
        _ -> False
      }
    After { time } ->
      when validRange.lower_bound is {
        IntervalBound { bound_type: Finite(lo), is_inclusive: False } -> time < lo
        IntervalBound { bound_type: Finite(lo), is_inclusive: True } -> time <= lo
        _ -> False
      }
  }
}

test satisfying() {
  let keyHash1 = "key1"
  let keyHash2 = "key2"
  let keyHash3 = "key3"
  let sig1 = Signature { keyHash: keyHash1 }
  let sig2 = Signature { keyHash: keyHash2 }
  let sig3 = Signature { keyHash: keyHash3 }
  let allOf = AllOf { scripts: [sig1, sig2] }
  let anyOf = AnyOf { scripts: [sig1, sig2] }
  let atLeast = AtLeast { required: 2, scripts: [sig1, sig2, sig3] }
  let before = Before { time: 10 }
  let after = After { time: 10 }
  let between = AllOf { scripts: [After { time: 10 }, Before { time: 15 }] }
  let vesting =
    AnyOf {
      scripts: [
        AllOf { scripts: [before, sig1] },
        // clawback
        AllOf { scripts: [after, sig2] },
      ],
    }
  // vested
  let validRange =
    fn(lo: Int, hi: Int) -> ValidityRange {
      Interval {
        lower_bound: IntervalBound {
          bound_type: Finite(lo),
          is_inclusive: True,
        },
        upper_bound: IntervalBound {
          bound_type: Finite(hi),
          is_inclusive: False,
        },
      }
    }
  list.and(
    [
      satisfied(sig1, [keyHash1], validRange(0, 1)),
      satisfied(sig2, [keyHash1, keyHash2], validRange(0, 1)),
      satisfied(allOf, [keyHash1, keyHash2], validRange(0, 1)),
      satisfied(anyOf, [keyHash2], validRange(0, 1)),
      satisfied(atLeast, [keyHash2, keyHash3], validRange(0, 1)),
      satisfied(before, [], validRange(0, 5)),
      satisfied(after, [], validRange(15, 20)),
      satisfied(after, [], validRange(10, 15)),
      satisfied(between, [], validRange(12, 13)),
      satisfied(vesting, [keyHash1], validRange(0, 5)),
      satisfied(vesting, [keyHash2], validRange(15, 20)),
      !satisfied(sig1, [keyHash2], validRange(0, 1)),
      !satisfied(sig3, [keyHash1, keyHash2], validRange(0, 1)),
      !satisfied(allOf, [keyHash1, keyHash3], validRange(0, 1)),
      !satisfied(anyOf, [keyHash3], validRange(0, 1)),
      !satisfied(atLeast, [keyHash2], validRange(0, 1)),
      !satisfied(before, [], validRange(5, 15)),
      !satisfied(before, [], validRange(5, 10)),
      !satisfied(before, [], validRange(10, 10)),
      !satisfied(after, [], validRange(5, 15)),
      !satisfied(between, [], validRange(0, 5)),
      !satisfied(between, [], validRange(0, 13)),
      !satisfied(between, [], validRange(0, 20)),
      !satisfied(between, [], validRange(13, 20)),
      !satisfied(between, [], validRange(13, 15)),
      !satisfied(between, [], validRange(15, 20)),
      !satisfied(vesting, [keyHash2], validRange(0, 5)),
      !satisfied(vesting, [keyHash1], validRange(15, 20)),
      !satisfied(vesting, [keyHash3], validRange(10, 10)),
      !satisfied(vesting, [keyHash3], validRange(0, 5)),
      !satisfied(vesting, [keyHash3], validRange(15, 20)),
    ],
  )
}

(although we'd probably have to replace slot with POSIX time...)

I like the idea, as I like the idea of having eDSL in Aiken in general for specific purpose.
This one in particular is simple enough. And the limitations are well known. Whether to put it in the stdlib or in a separate package is a good question.

🖖 Tell me where to stick it, boss, and I'll send a PR

I believe that a separate module would be best for that one. This would also give you more flexibility on how to articulate it and would be less "controversial" than being in the stdlib.

https://github.com/SundaeSwap-finance/aicone
Open to code review / suggestions :)


Docker Alpine ex_secp256k1 NIF won't load when application starts up

Not sure if anyone ran into this, but when trying to run my elixir phoenix app for deployment in an alpine docker container with ex_secp256k1 as a dependency, I'm able to fully build the elixir app after installing rust and cargo in the docker container with no errors but then get an error related to on_load_function_failed for ex_secp256k1 when the application start ups.
#{label=>{application_controller,exit},report=>[{application,kernel},{exited,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,'Elixir.ExSecp256k1'}}},{kernel,start,[normal,[]]}}},{type,permanent}]}

I'm trying to figure out how to debug it better because this error is too vague especially because my app & deps all build with no issues.
erlang <IP_ADDRESS>
elixir 1.11.4-otp-23
nodejs 14.17.0
rust 1.22.0

I'm seeing this as well.

Install libgcc in the alpine image and the issue goes away.
Error loading shared library libgcc_s.so.1: No such file or directory (needed by libexsecp256k1.so)

Thanks @feld , I was able to solve by adding libgcc and now working backwards from a single stage Dockerfile


Lack of proper documentation

Hello
Thanks for this cool project but I must say that it's lacking the proper documentation.

What, in your opinion, would you like changed?

@vmorganp I would like to see a detailed explanation of how to setup and get the setup running and also with added known limitations like the one that I found on Reddit about not being able to put one of the containers in the shared network with another one when behind on a reverse proxy, also some examples and maybe videos about different container setup process.
Also, a detailed "How it does work" so that we know if it's safe to set it up on a public server, plus the ones where containers don't expose any ports publicly, but instead they use a docker network in share with the reverse proxy to confirm HTTPS on top of those containers and situations where server is also behind a Cloudflare proxy tunnel.

Is a document like that something you'd be willing to help write? It seems like you know what you're looking for and if you submit a PR to the readme I'll definitely work with you on it.

@vmorganp Sure but the problem here is I don't understand the dynamic of Lazytainer myself to produce documents for it, that's where I need your help and detailed explanations first.

How's this?
https://github.com/vmorganp/Lazytainer#how-it-works

I think complete examples would be much more practical. For example caddy:
whoami.mysite.com {
    reverse_proxy lazytainer:81
}

@arvigeus I'm not sure what your example code is representing there, but there are complete examples using the whoami service as well as a Minecraft server. Is there another example or something missing you'd like to see?


Make SwitchListTile use Secondary color

Make SwitchListTile use Secondary color

Gold has detected about 2 new digest(s) on patchset 1.
View them at https://flutter-gold.skia.org/cl/github/93214

There's been no activity on this PR about 2 1/2 months and the work is probably better handled as part of https://github.com/flutter/flutter/issues/91605, so I'm going to close the PR.


coreos-base/(ue-rs|update_engine): Control extracted OEM payload name

This pulls in https://github.com/flatcar/ue-rs/pull/49 and https://github.com/flatcar/update_engine/pull/36 to fix the handling of OEM update payloads in a Nebraska response with self-hosted packages. Before this fix the processing failed and had to rely on the fallback download from the release server.
How to use
Backport to new Alpha
Testing done
Tested that updating to the built payload works when using this patch for flatcar-update and running sudo ./flatcar-update -V 1.2.3 -D -P flatcar_test_update.gz -E extrafile-amd64-3760.1.1-oem-qemu.gz:
diff --git a/bin/flatcar-update b/bin/flatcar-update
index d1ca303..42bf086 100755
--- a/bin/flatcar-update
+++ b/bin/flatcar-update
@@ -59,9 +59,6 @@ while true; do
     if [ "$1" = "" ]; then
       echo "Error: --extension must not have an empty value" > /dev/stderr ; exit 1
     fi
-    if [[ ! "$(basename -- "$1")" =~ ^(flatcar|oem).*gz$ ]]; then
-      echo "Error: --extension expects paths to files named oem-OEMID.gz or flatcar-NAME.gz (with possible 'flatcar_test_update-' prefix), found: $1" > /dev/stderr ; exit 1
-    fi
     EXTENSIONS+=("$1")
     ;;
   -L|--listen-port-1)
@@ -121,8 +118,6 @@ OEMID=$({ grep -m 1 -o "^ID=.*" /usr/share/oem/oem-release 2> /dev/null || true
 if [ "${OEMID}" != "" ] && { [ -e "/usr/share/flatcar/oems/${OEMID}" ] || [ -e "/usr/share/oem/sysext/active-oem-${OEMID}" ]; }; then
   if [ "$PAYLOAD" = "" ]; then
     EXTENSIONS+=("/var/tmp/flatcar-update/oem-${OEMID}.gz")
-  elif ! echo " ${EXTENSIONS[*]} " | grep -q -P "[ /](flatcar_test_update-)?oem-${OEMID}.gz "; then # Surrounded with space to only match base name
-    echo "Error: system requires '${OEMID}' OEM extension but not passed in --extension" > /dev/stderr ; exit 1
   fi
 fi
 for NAME in $(grep -h -o '^[^#]*' /etc/flatcar/enabled-sysext.conf /usr/share/flatcar/enabled-sysext.conf 2> /dev/null | grep -v -x -f <(grep '^-' /etc/flatcar/enabled-sysext.conf 2> /dev/null | cut -d - -f 2-) | grep -v -P '^(-).*'); do

Jenkins build

[x] Changelog entries added in the respective changelog/ directory (user-facing change, bug fix, security fix, update)
[ ] Inspected CI output for image differences: /boot and /usr size, packages, list files for any missing binaries, kernel modules, config files, kernel modules, etc.

We need this in stable too, i'm going to prepare a PR with a backport.

Stable isn't using ue-rs yet.
@pothos DO you prefer to update stable to ue-rs or https://github.com/flatcar/update_engine/pull/39?


Cannot change dependencies of configuration ':flutter:releaseApi' after it has been included in dependency resolution.

build apk success.
Add Flutter to existing apps sync fail when I upgrade flutter sdk to 1.7.8
[✓] Flutter (Channel stable, v1.7.8+hotfix.3, on Mac OS X 10.14.5 18F132, locale
    zh-Hans-CN)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[!] Xcode - develop for iOS and macOS (Xcode 10.2.1)
    ! CocoaPods out of date (1.6.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin
        code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade:
        brew upgrade cocoapods
        pod setup
[✓] iOS tools - develop for iOS devices
[✓] Android Studio (version 3.4)
[✓] Connected device (1 available)

Executing tasks: [assembleDebug]
Parallel execution with configuration on demand is an incubating feature.

Configure project :LibCore
taskNames is [assembleDebug]
current module is LibCore
compilemodule  is app
apply plugin is com.android.library

Configure project :loginlib
taskNames is [assembleDebug]
current module is loginlib
compilemodule  is app
apply plugin is com.android.library

Configure project :app
taskNames is [assembleDebug]
current module is app
compilemodule  is app
apply plugin is com.android.application
there is no add dependencies
=============apply===============

FAILURE: Build failed with an exception.

Where:
Script '/Users/kuikui/flutter/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 341

What went wrong:
A problem occurred configuring root project 'weidai.CSOnline'.

A problem occurred configuring project ':flutter'.
Cannot change dependencies of configuration ':flutter:releaseApi' after it has been included in dependency resolution.

@kuiwy Can you please try it with current stable version?


Abacus releases should be reproducible

Currently we only tag the releases, without fixing the dependencies. Therefore it is not easy to checkout old version (say 0.0.3) and build it. Sometimes this is not even possible due to the open ranges used for module dependencies.
We should publish the exact versions that we used to validate and release Abacus for each released version.
I believe we can do this with npm shrinkwrap to fix the dependencies, then store the npm-shrinkwrap.json in a release (or the etc) directory for future use. This file will be versioned by git, so checking out a specific release will also download the exact set of dependencies.

I was planning to do this for the next release (which I'd like to cut next week during the CF summit) but I'm not sure we'll be able to use npm shrinkwrap yet for that release, as I believe folks were running into errors running npm shrinkwrap. I'll try and see if these errors are still there.


Beaker Executor should execute multiple Tango steps in one Beaker experiment

🚀 The feature, motivation and pitch
Beaker experiments have significant overhead. When we're running many small Tango steps, we can save some time by running multiple steps at once.
An issue is that we don't know ahead of time how long a step will take, so we don't know which steps make sense to group together. When running like this, it would make sense for Beaker experiments to poll the workspace for new work. This would be a drastic change in how we execute things, and it would overlap with Beaker functionality in uncomfortable ways. This feature requires some careful thought.
Alternatives
No response
Additional context
No response

The caveats in the description of this issue stand, but we can probably find sub-graphs of the whole execution graph that always make sense to group together into one Beaker experiment. A run of steps where each one depends on the previous step, and no other dependencies are unfulfilled, those could always be grouped. It would cut the overhead of my current experiment by 66%.

A run of steps where each one depends on the previous step, and no other dependencies are unfulfilled, those could always be grouped. It would cut the overhead of my current experiment by 66%.

That was my thought as well.

These steps would also have to have matching step resource requirements.

Or we take the max of the resource requirements.


Add ability to add custom environment variable to dapr control plane

In what area(s)?

/area runtime

Need a way to specify soft memory limit (ie GOMEMLIMIT) to dapr system. This comes handy when setting memory limit on container so the Go runtime can try to release memory before OOMKilled happens.  Another options would be to add it in code https://pkg.go.dev/runtime/debug#SetMemoryLimit but this way is configurable by the customer directly as adding it in code will still require some kind of user interaction (ie set it at 90% or 95%, etc).
What version of Dapr?

1.1.x
1.0.x
edge: output of git describe --dirty

Expected Behavior
I should be able to say, in the corresponding chart:
extraEnvVars:
- name: GOMEMLIMIT
  value: 900MiB

and this is set to the corresponding deployment/sts for the container in the chart.
Actual Behavior
There is no option for this
Steps to Reproduce the Problem

Release Note

RELEASE NOTE:

/assign


E2E tests for different header encodings

All is available only for .NET 5, there are no equivalents for .NET Core 3.1 AFAIK.
1. Proxying request with UTF8/Latin1 header values
1.a. Proxy server needs: kestrel.RequestHeaderEncodingSelector:
https://github.com/microsoft/reverse-proxy/blob/667073153562a37800e8134a1f90f967f2b5021e/test/ReverseProxy.FunctionalTests/Common/TestEnvironment.cs#L134-L137
This can be configured manually in ConfigureWebHost.
1.b. Proxy client needs: RequestHeaderEncodingSelector:
https://github.com/microsoft/reverse-proxy/blob/667073153562a37800e8134a1f90f967f2b5021e/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs#L250-L250
This can be achieved in custom IProxyHttpClientFactory implementation, however the default implementation contains non-trivial amount of code and is internal, which leads to copy-pasting quite a bit of code.
We could also add configuration for request header encoding, which can be per header name, and we would ensure that receiving server and sending client are in sync and expect the same encoding. However, that would need some more effort.
2. Proxying back response with UTF8/Latin1 header values
2.a. Proxy client needs: ResponseHeaderEncodingSelector:
https://github.com/microsoft/reverse-proxy/blob/667073153562a37800e8134a1f90f967f2b5021e/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs#L251-L251
Achievable the same way as 1.b.
2.b. Proxy server fails with: System.InvalidOperationException: Invalid non-ASCII or control character in header
I haven't found RequestHeaderEncodingSelector equivalent for response headers. I don't know if there's a way to do this atm.
We could use transforms to encode the header value in ASCII characters as this RFC describes, but I don't know if clients in general can handle that on its own or the consumer would need to parse it manually.
cc: @Tratcher
Contributes to #154

Response headers (not supported yet): https://github.com/dotnet/aspnetcore/issues/26334

Few error handling issues discovered with this:

In case we receive Latin1 encoded request header and kestrel is not configured to receive it (i.e. no kestrel.RequestHeaderEncodingSelector = _ => Encoding.Latin1;) the server will return 400 and neither kestrel's IExceptionHandlerFeature nor proxy's IProxyErrorFeature are used.
In case an outgoing request construction fails, IProxyErrorFeature stays empty and only IExceptionHandlerFeature can be used to get the error details. Stack trace in this issue: https://github.com/microsoft/reverse-proxy/issues/765
In case an incoming response fails to be copied to kestrel, IProxyErrorFeature stays empty an only IExceptionHandlerFeature can be used to get the error details. Stack trace:

System.InvalidOperationException: Invalid non-ASCII or control character in header: 0x00E7
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.ThrowInvalidHeaderCharacter(Char ch)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.ValidateHeaderValueCharacters(StringValues headerValues)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpResponseHeaders.SetValueFast(String key, StringValues value)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.Microsoft.AspNetCore.Http.IHeaderDictionary.set_Item(String key, StringValues value)
   at Microsoft.AspNetCore.Http.ParsingHelpers.SetHeaderUnmodified(IHeaderDictionary headers, String key, Nullable`1 values)
   at Microsoft.AspNetCore.Http.ParsingHelpers.AppendHeaderUnmodified(IHeaderDictionary headers, String key, StringValues values)
   at Microsoft.AspNetCore.Http.HeaderDictionaryExtensions.Append(IHeaderDictionary headers, String key, StringValues value)
   at Microsoft.ReverseProxy.Service.Proxy.HttpTransformer.CopyResponseHeaders(HttpContext httpContext, HttpHeaders source, IHeaderDictionary destination) in /home/manicka/Repositories/reverse-proxy.2/src/ReverseProxy/Service/Proxy/HttpTransformer.cs:line 115
   at Microsoft.ReverseProxy.Service.Proxy.HttpTransformer.TransformResponseAsync(HttpContext httpContext, HttpResponseMessage proxyResponse) in /home/manicka/Repositories/reverse-proxy.2/src/ReverseProxy/Service/Proxy/HttpTransformer.cs:line 71
   at Microsoft.ReverseProxy.Service.RuntimeModel.Transforms.StructuredTransformer.<>n__1(HttpContext httpContext, HttpResponseMessage proxyResponse)
   at Microsoft.ReverseProxy.Service.RuntimeModel.Transforms.StructuredTransformer.TransformResponseAsync(HttpContext httpContext, HttpResponseMessage proxyResponse) in /home/manicka/Repositories/reverse-proxy.2/src/ReverseProxy/Service/RuntimeModel/Transforms/StructuredTransformer.cs:line 102
   at Microsoft.ReverseProxy.Service.Proxy.HttpProxy.ProxyAsync(HttpContext context, String destinationPrefix, HttpMessageInvoker httpClient, RequestProxyOptions requestOptions, HttpTransformer transformer) in /home/manicka/Repositories/reverse-proxy.2/src/ReverseProxy/Service/Proxy/HttpProxy.cs:line 176
   at Microsoft.ReverseProxy.Middleware.ProxyInvokerMiddleware.Invoke(HttpContext context) in /home/manicka/Repositories/reverse-proxy.2/src/ReverseProxy/Middleware/ProxyInvokerMiddleware.cs:line 81
   at Microsoft.ReverseProxy.Middleware.PassiveHealthCheckMiddleware.Invoke(HttpContext context) in /home/manicka/Repositories/reverse-proxy.2/src/ReverseProxy/Middleware/PassiveHealthCheckMiddleware.cs:line 27
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.ReverseProxy.HeaderEncodingTests.<>c__DisplayClass1_0.<<ProxyAsync_ResponseWithEncodedHeaderValue>b__3>d.MoveNext() in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs:line 173
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task), Path = "/" }
   at Microsoft.ReverseProxy.HeaderEncodingTests.ProxyAsync_ResponseWithEncodedHeaderValue(String headerValue, String encodingName) in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs:line 186
   at Microsoft.ReverseProxy.HeaderEncodingTests.ProxyAsync_ResponseWithEncodedHeaderValue(String headerValue, String encodingName) in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs:line 201
   at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass48_1.<<InvokeTestMethodAsync>b__1>d.MoveNext() in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 264
--- End of stack trace from previous location ---
   at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48
   at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) in C:\Dev\xunit\xunit\src\xunit.core\Sdk\ExceptionAggregator.cs:line 90

The last two points stem from reverse proxy catching and translating only exception from HttpClient.SendAsync:
https://github.com/microsoft/reverse-proxy/blob/main/src/ReverseProxy/Service/Proxy/HttpProxy.cs#L130-L132
and not from all the code before and after. Thus, these errors are handled by kestrel and not available in IProxyErrorFeature.

In case an outgoing request construction fails, IProxyErrorFeature stays empty and only IExceptionHandlerFeature can be used to get the error details. Stack trace in this issue: #765

The error you showed on #765 is a configuration issue with Destination Addresses. Can you show the error that would be hit if Kestrel accepted UTF-8 or Latin1 headers but then they were rejected when copying to HttpClient? I know the callstack will be similar, but I want to be clear on the specific exception thrown so we can handle it.
IExceptionHandlerFeature is only relevant if an app has app.UseExceptionHandler("/Home/Error"); in Startup.Configure. Otherwise the exception is caught by the server and logged.

The error you showed on #765 is a configuration issue with Destination Addresses. Can you show the error that would be hit if Kestrel accepted UTF-8 or Latin1 headers but then they were rejected when copying to HttpClient? I know the callstack will be similar, but I want to be clear on the specific exception thrown so we can handle it.

For headers it won't throw atm from HttpProxy.CreateRequestMessageAsync. It'll throw from HttpClient.SendAsync and is covered by ProxyErrorFeature:
System.Net.Http.HttpRequestException: Request headers must contain only ASCII characters.
   at System.Net.Http.HttpConnection.WriteStringAsync(String s, Boolean async)
   at System.Net.Http.HttpConnection.WriteStringAsync(String s, Boolean async, Encoding encoding)
   at System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders headers, String cookiesFromContainer, Boolean async)
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at Microsoft.ReverseProxy.Service.Proxy.HttpProxy.ProxyAsync(HttpContext context, String destinationPrefix, HttpMessageInvoker httpClient, RequestProxyOptions requestOptions, HttpTransformer transformer) in /home/manicka/Repositories/reverse-proxy.2/src/ReverseProxy/Service/Proxy/HttpProxy.cs:line 130 }
   at Microsoft.ReverseProxy.HeaderEncodingTests.<>c__DisplayClass0_0.<<ProxyAsync_RequestWithEncodedHeaderValue>b__3>d.MoveNext() in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs:line 98
--- End of stack trace from previous location ---
   at Microsoft.ReverseProxy.HeaderEncodingTests.<>c__DisplayClass0_0.<<ProxyAsync_RequestWithEncodedHeaderValue>b__3>d.MoveNext() in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs:line 106
--- End of stack trace from previous location ---
   at Microsoft.ReverseProxy.Common.TestEnvironment.Invoke(Func`2 clientFunc, CancellationToken cancellationToken) in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/Common/TestEnvironment.cs:line 74
   at Microsoft.ReverseProxy.Common.TestEnvironment.Invoke(Func`2 clientFunc, CancellationToken cancellationToken) in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/Common/TestEnvironment.cs:line 80
   at Microsoft.ReverseProxy.HeaderEncodingTests.ProxyAsync_RequestWithEncodedHeaderValue(String headerValue, String encodingName) in /home/manicka/Repositories/reverse-proxy.2/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs:line 71
   at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass48_1.<<InvokeTestMethodAsync>b__1>d.MoveNext() in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 264
--- End of stack trace from previous location ---
   at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48
   at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) in C:\Dev\xunit\xunit\src\xunit.core\Sdk\ExceptionAggregator.cs:line 90

Although a custom transform could cause an exception here since TransformRequestAsync is called from CreateRequestMessageAsync:
https://github.com/microsoft/reverse-proxy/blob/bb7ab95b253916d15a50d574fbc09cd8d71327fa/src/ReverseProxy/Service/Proxy/HttpProxy.cs#L282

IExceptionHandlerFeature is only relevant if an app has app.UseExceptionHandler("/Home/Error"); in Startup.Configure. Otherwise the exception is caught by the server and logged.

Yeah, I register the handler like this:
https://github.com/microsoft/reverse-proxy/blob/0c977e27e781fd988055bf561b19a53c067dc7ab/test/ReverseProxy.FunctionalTests/HeaderEncodingTests.cs#L54-L61

Although a custom transform could cause an exception here since TransformRequestAsync is called from CreateRequestMessageAsync:

Hmm, that implies an app code bug rather than an issue proxying the request. It's probably best to let those escape and be reported up stack. The client would see a 500 response which seems appropriate.
If any of the built in transforms could cause an exception then I think we'd address those in the transform.

In case an incoming response [headers] fails to be copied to kestrel, IProxyErrorFeature stays empty an only IExceptionHandlerFeature can be used to get the error details.

We should catch that one since it's specific to the request/response data.

.NET 3.1 HttpClient AppSwitch for Latin1 headers (nothing for UTF-8):
https://github.com/dotnet/corefx/blob/release/3.1/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/StaticHttpSettings.cs#L10
Do we want to enable process wide app switch? Or should we only document this option for .NET 3.1?

Do we want to enable process wide app switch? Or should we only document this option for .NET 3.1?

Docs only. app switches don't test well. Just do a manual test.


HDDS-4413. Container replication should fail in case of import failure.

What changes were proposed in this pull request?
In case of a failure during the importContainer phase the replication task status should be failed rather than being success.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-4413
How was this patch tested?
Added a UT in TestReplicationSupervisor

Thanx @adoroszlai for the review!!!


0.2.1, 0.2.2, TypeError: fontgen is not a function

Hi, sorry if this is a noob question or my fault. gulp errors on the tasks that use fontgen. 0.2.0 works fine.
[16:45:06] TypeError: fontgen is not a function     at Gulp.<anonymous> (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/gulpfile.js:210:11)     at module.exports (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/orchestrator/lib/runTask.js:34:7)     at Gulp.Orchestrator._runTask (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/orchestrator/index.js:273:3)     at Gulp.Orchestrator._runStep (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/orchestrator/index.js:214:10)     at Gulp.Orchestrator.start (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/orchestrator/index.js:134:8)     at runNextSet (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/run-sequence/index.js:86:16)     at runSequence (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/run-sequence/index.js:97:2)     at Gulp.<anonymous> (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/gulpfile.js:291:3)     at module.exports (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/orchestrator/lib/runTask.js:34:7)     at Gulp.Orchestrator._runTask (/Users/rangi/Dropbox/cwm2016/nm-jp/nagmag.jp/site/web/app/themes/nm2016/node_modules/orchestrator/index.js:273:3)
Here is the snippet from my gulpfile:
// Generate webfonts from source files gulp.task('font-make', function() {   return gulp.src(path.source + 'rangi/*.{ttf,otf}')     .pipe(fontgen({ dest: 'assets/fonts/' })); });
I had a look at the diff of 2.0.0 and 2.0.2 and didn't recognize any problems.  :-)

You should be fine with 0.2.0 for now. Ill fix this.

Fixed in 0.2.4
Sorry for your trouble, I'm still new to es6!

Awesome! I got that yesterday too, when I first tried taking gulp-fontgen for a spin. Looking forward to trying out 0.2.4 next week

I experienced the same issue, when the 0.2.4 will be available ? THX

@sgen thanks for your reply! I'm looking forward to the next version :-)


Building Congo v2.1.0 on Cloudflare Pages

What happened?
Hello,
I'm having a trouble building Congo (manual install method) on Cloudflare Pages.
Build command = npm run build
Build output directory = public
Please see the attached build log.
Would appreciate your comment, please.
Thank you!
Theme version
v2.1.0
Hugo version
v0.95.0
What browsers are you seeing the problem on?
Safari
Relevant Hugo log output
13:29:06.903	Initializing build environment. This may take up to a few minutes to complete
13:29:09.016	Success: Finished initializing build environment
13:29:09.016	Cloning repository...
13:29:10.984	Success: Finished cloning repository files
13:29:11.265	Installing dependencies
13:29:11.277	Python version set to 2.7
13:29:13.528	Attempting node version 'v16.14.2' from .nvmrc
13:29:15.225	Downloading and installing node v16.14.2...
13:29:15.702	Downloading https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz...
13:29:16.130	Computing checksum with sha256sum
13:29:16.263	Checksums matched!
13:29:20.726	Now using node v16.14.2 (npm v8.5.0)
13:29:21.319	Started restoring cached build plugins
13:29:21.335	Finished restoring cached build plugins
13:29:22.061	Attempting ruby version 2.7.1, read from environment
13:29:27.978	Using ruby version 2.7.1
13:29:28.341	Using PHP version 5.6
13:29:28.518	5.2 is already installed.
13:29:28.546	Using Swift version 5.2
13:29:28.547	Started restoring cached node modules
13:29:28.567	Finished restoring cached node modules
13:29:29.037	Installing NPM modules using NPM version 8.5.0
13:29:32.689	npm WARN deprecated<EMAIL_ADDRESS>Potential XSS vulnerability patched in v6.0.0.
13:29:34.506
13:29:34.506	><EMAIL_ADDRESS>preinstall
13:29:34.506	> rimraf assets/vendor
13:29:34.506
13:29:34.615
13:29:34.615	><EMAIL_ADDRESS>postinstall
13:29:34.615	> vendor-copy
13:29:34.615
13:29:34.718	/opt/buildhome/repo/node_modules/mermaid/dist/mermaid.min.js => /opt/buildhome/repo/assets/lib/mermaid/mermaid.min.js
13:29:34.718	/opt/buildhome/repo/node_modules/chart.js/dist/chart.min.js => /opt/buildhome/repo/assets/lib/chart/chart.min.js
13:29:34.718	/opt/buildhome/repo/node_modules/katex/dist/katex.min.js => /opt/buildhome/repo/assets/lib/katex/katex.min.js
13:29:34.718	/opt/buildhome/repo/node_modules/katex/dist/katex.min.css => /opt/buildhome/repo/assets/lib/katex/katex.min.css
13:29:34.718	/opt/buildhome/repo/node_modules/katex/dist/contrib/auto-render.min.js => /opt/buildhome/repo/assets/lib/katex/auto-render.min.js
13:29:34.718	/opt/buildhome/repo/node_modules/katex/dist/fonts/ => /opt/buildhome/repo/assets/lib/katex/fonts/
13:29:34.718	/opt/buildhome/repo/node_modules/fuse.js/dist/fuse.min.js => /opt/buildhome/repo/assets/lib/fuse/fuse.min.js
13:29:34.749
13:29:34.750	added 203 packages, and audited 204 packages in 5s
13:29:34.750
13:29:34.750	23 packages are looking for funding
13:29:34.750	  run `npm fund` for details
13:29:34.757
13:29:34.757	3 vulnerabilities (2 moderate, 1 high)
13:29:34.757
13:29:34.757	To address issues that do not require attention, run:
13:29:34.757	  npm audit fix
13:29:34.757
13:29:34.757	To address all issues (including breaking changes), run:
13:29:34.757	  npm audit fix --force
13:29:34.757
13:29:34.757	Run `npm audit` for details.
13:29:34.768	NPM modules installed
13:29:35.306	Installing Hugo 0.95.0
13:29:36.533	hugo v0.95.0-9F2E76AF+extended linux/amd64 BuildDate=2022-03-16T14:20:19Z VendorInfo=gohugoio
13:29:36.538	Started restoring cached go cache
13:29:36.561	Finished restoring cached go cache
13:29:36.720	go version go1.14.4 linux/amd64
13:29:36.741	go version go1.14.4 linux/amd64
13:29:36.745	Installing missing commands
13:29:36.745	Verify run directory
13:29:36.745	Executing user command: npm run build
13:29:37.217
13:29:37.217	><EMAIL_ADDRESS>build
13:29:37.217	> NODE_ENV=production ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit
13:29:37.217
13:29:38.426
13:29:38.426	warn - The RTL features in Tailwind CSS are currently in preview.
13:29:38.427	warn - Preview features are not covered by semver, and may be improved in breaking ways at any time.
13:29:38.676
13:29:38.676	Done in 599ms.
13:29:38.704	Finished
13:29:38.705	Note: No functions dir at /functions found. Skipping.
13:29:38.705	Validating asset output directory
13:29:38.705	Error: Output directory "public" not found.

Your build commands doesn't look right. This theme is for Hugo, so your build command should be hugo. You can see more details about deploying Hugo sites to Cloudflare Pages in their official docs:

Configuration option
Value

Production branch
main

Build command
hugo

Build directory
public

I tried building with the hugo command at a very first try, but there was even less build progress that way.
I tried once again and had a same unsuccessful result — please see the log below:

08:22:19.658	Initializing build environment. This may take up to a few minutes to complete
08:22:21.733	Success: Finished initializing build environment
08:22:21.733	Cloning repository...
08:22:23.962	Success: Finished cloning repository files
08:22:24.237	Installing dependencies
08:22:24.249	Python version set to 2.7
08:22:26.510	Attempting node version 'v16.14.2' from .nvmrc
08:22:28.228	Downloading and installing node v16.14.2...
08:22:28.727	Downloading https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz...
08:22:29.146	Computing checksum with sha256sum
08:22:29.281	Checksums matched!
08:22:33.797	Now using node v16.14.2 (npm v8.5.0)
08:22:34.385	Started restoring cached build plugins
08:22:34.401	Finished restoring cached build plugins
08:22:35.122	Attempting ruby version 2.7.1, read from environment
08:22:41.112	Using ruby version 2.7.1
08:22:41.482	Using PHP version 5.6
08:22:41.657	5.2 is already installed.
08:22:41.684	Using Swift version 5.2
08:22:41.685	Started restoring cached node modules
08:22:41.710	Finished restoring cached node modules
08:22:42.189	Installing NPM modules using NPM version 8.5.0
08:22:45.755	npm WARN deprecated<EMAIL_ADDRESS>Potential XSS vulnerability patched in v6.0.0.
08:22:47.689
08:22:47.689	><EMAIL_ADDRESS>preinstall
08:22:47.689	> rimraf assets/vendor
08:22:47.689
08:22:47.803
08:22:47.804	><EMAIL_ADDRESS>postinstall
08:22:47.804	> vendor-copy
08:22:47.804
08:22:47.905	/opt/buildhome/repo/node_modules/mermaid/dist/mermaid.min.js => /opt/buildhome/repo/assets/lib/mermaid/mermaid.min.js
08:22:47.905	/opt/buildhome/repo/node_modules/chart.js/dist/chart.min.js => /opt/buildhome/repo/assets/lib/chart/chart.min.js
08:22:47.905	/opt/buildhome/repo/node_modules/katex/dist/katex.min.js => /opt/buildhome/repo/assets/lib/katex/katex.min.js
08:22:47.905	/opt/buildhome/repo/node_modules/katex/dist/katex.min.css => /opt/buildhome/repo/assets/lib/katex/katex.min.css
08:22:47.906	/opt/buildhome/repo/node_modules/katex/dist/contrib/auto-render.min.js => /opt/buildhome/repo/assets/lib/katex/auto-render.min.js
08:22:47.906	/opt/buildhome/repo/node_modules/katex/dist/fonts/ => /opt/buildhome/repo/assets/lib/katex/fonts/
08:22:47.906	/opt/buildhome/repo/node_modules/fuse.js/dist/fuse.min.js => /opt/buildhome/repo/assets/lib/fuse/fuse.min.js
08:22:47.941
08:22:47.941	added 203 packages, and audited 204 packages in 5s
08:22:47.941
08:22:47.941	23 packages are looking for funding
08:22:47.941	  run npm fund for details
08:22:47.947
08:22:47.947	3 vulnerabilities (2 moderate, 1 high)
08:22:47.947
08:22:47.947	To address issues that do not require attention, run:
08:22:47.947	  npm audit fix
08:22:47.947
08:22:47.948	To address all issues (including breaking changes), run:
08:22:47.948	  npm audit fix --force
08:22:47.948
08:22:47.948	Run npm audit for details.
08:22:47.959	NPM modules installed
08:22:48.501	Installing Hugo 0.96.0
08:22:49.795	hugo v0.96.0-2fd4a7d3d6845e75f8b8ae3a2a7bd91438967bbb+extended linux/amd64 BuildDate=2022-03-26T09:15:58Z VendorInfo=gohugoio
08:22:49.801	Started restoring cached go cache
08:22:49.824	Finished restoring cached go cache
08:22:49.988	go version go1.14.4 linux/amd64
08:22:50.009	go version go1.14.4 linux/amd64
08:22:50.014	Installing missing commands
08:22:50.014	Verify run directory
08:22:50.014	Executing user command: hugo
08:22:50.058	Error: module "congo" not found; either add it as a Hugo Module or store it in "/opt/buildhome/repo/themes".: module does not exist
08:22:50.058	Total in 5 ms
08:22:50.068	Failed: build command exited with code: 255

Try installing congo as a submodule. I don't see any reference to hugo mods in the Cloudflare docs, only to installing themes as submodules.

Unless you specifically need to build a custom version of the theme you shouldn't need to run npm as part of your site build. If you're using the manual installation method, simply build your site using the hugo command.

08:22:50.058 Error: module "congo" not found; either add it as a Hugo Module or store it in "/opt/buildhome/repo/themes".: module does not exist

This error suggests that it can't find the theme. Does the directory themes/congo exist in your deployment? If so, it may be that you are missing the line theme = "congo" in your Hugo config file.

I've been able to deploy a Congo themed site successfully with Cloudflare pages.
I've installed Congo through a Git submodule. My config file is simply:
> cat config.toml
───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: config.toml
───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ theme = "congo"
───────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Build config (the default for Hugo):

Environment variable to use the latest version of Hugo:

Cloudflare log:
14:23:14.843 | Initializing build environment. This may take up to a few minutes to complete
-- | --
14:23:17.034 | Success: Finished initializing build environment
14:23:17.034 | Cloning repository...
14:23:20.498 | Success: Finished cloning repository files
14:23:20.822 | Installing dependencies
14:23:20.833 | Python version set to 2.7
14:23:24.930 | v12.18.0 is already installed.
14:23:26.309 | Now using node v12.18.0 (npm v6.14.4)
14:23:26.647 | Started restoring cached build plugins
14:23:26.663 | Finished restoring cached build plugins
14:23:27.370 | Attempting ruby version 2.7.1, read from environment
14:23:33.297 | Using ruby version 2.7.1
14:23:33.662 | Using PHP version 5.6
14:23:33.833 | 5.2 is already installed.
14:23:33.862 | Using Swift version 5.2
14:23:33.862 | Installing Hugo 0.96.0
14:23:34.996 | hugo v0.96.0-2fd4a7d3d6845e75f8b8ae3a2a7bd91438967bbb+extended linux/amd64 BuildDate=2022-03-26T09:15:58Z VendorInfo=gohugoio
14:23:35.001 | Started restoring cached go cache
14:23:35.028 | Finished restoring cached go cache
14:23:35.180 | go version go1.14.4 linux/amd64
14:23:35.201 | go version go1.14.4 linux/amd64
14:23:35.206 | Installing missing commands
14:23:35.206 | Verify run directory
14:23:35.206 | Executing user command: hugo
14:23:35.290 | Start building sites …
14:23:35.290 | hugo v0.96.0-2fd4a7d3d6845e75f8b8ae3a2a7bd91438967bbb+extended linux/amd64 BuildDate=2022-03-26T09:15:58Z VendorInfo=gohugoio
14:23:35.315 |
14:23:35.315 | \| EN
14:23:35.315 | -------------------+-----
14:23:35.315 | Pages            \|  9
14:23:35.315 | Paginator pages  \|  0
14:23:35.315 | Non-page files   \|  0
14:23:35.315 | Static files     \|  7
14:23:35.315 | Processed images \|  0
14:23:35.315 | Aliases          \|  0
14:23:35.315 | Sitemaps         \|  1
14:23:35.316 | Cleaned          \|  0
14:23:35.316 |
14:23:35.316 | Total in 71 ms
14:23:35.326 | Finished
14:23:35.327 | Note: No functions dir at /functions found. Skipping.
14:23:35.327 | Validating asset output directory
14:23:35.948 | Deploying your site to Cloudflare's global network...
14:23:41.711 | Success: Your site was deployed!

Thank you all!
I'm now successfully building Congo Cloudflare Pages.


Eloquent dirty update with Carbon

Laravel Version: 5.4.12
PHP Version: 7.0
Database Driver & Version: MariaDB 5.5 & MariaDB 10.1

Description:
Eloquent does not perform UPDATE queries if only DATETIME columns changed.
Steps To Reproduce:
Now in database I have a row where next_exam_at (type is DATETIME) = 2017-05-01 00:00:00
class Student extends Illuminate\Database\Eloquent\Model {
    protected $dates = ['created_at', 'updated_at', 'next_exam_at'];
}

$student = Student::first();

echo $student->next_exam_at->format('Y-m-d H:i:s');
// Outputs: 2017-05-08 00:00:00

// I've tried these ways
$student->next_exam_at->addDay();
$student->next_exam_at = (clone $people->next_exam_at)->addDay();

$student->save();

But after save() the date in database is still 2017-05-01 00:00:00. It's expected to be 2017-05-02 00:00:00

Kindly search on the forums. This repo is for bug reporting only.

As for your issue, you are doing it wrong. I would do it like this:
$student->next_exam_at = Carbon::parse($people->next_exam_at)->addDay();

Sorry for that.
But I think it could be more elegantly to change the date if the dirty check could compare the value of Carbon
For example, it could do some stuff like this:
namespace Illuminate\Database\Eloquent\Concerns;

use ...;

trait HasAttributes
{
    /**
     * Sync a single original attribute with its current value.
     *
     * @param  string  $attribute
     * @return $this
     */
    public function syncOriginalAttribute($attribute)
    {
        if ($this->isDateAttribute($attribute) {
            $this->original[$attribute] = Carbon::instance($this->attributes[$attribute]);
        } else {
            $this->original[$attribute] = $this->attributes[$attribute];
        }

        return $this;
    }

    /**
     * Get the attributes that have been changed since last sync.
     *
     * @return array
     */
    public function getDirty()
    {
        $dirty = [];

        foreach ($this->attributes as $key => $value) {
            if (! array_key_exists($key, $this->original)) {
                $dirty[$key] = $value;
            } elseif ($value !== $this->original[$key] &&
                    ! $this->originalIsNumericallyEquivalent($key)) {
                $dirty[$key] = $value;
            } elseif ($this->isDateAttribute($attribute) &&
                    $value->eq($this->original[$key])) {
                $dirty[$key] = $value;
            }
        }

        return $dirty;
    }
}

The following works for me:
class Student extends Model
{
    protected $dates = ['next_exam_at'];
}

    $student = Student::find(1);
    var_dump($student->next_exam_at);
    $student->next_exam_at = $student->next_exam_at->addDay();
    $student->save();
    var_dump($student->next_exam_at);
    die();

outputs:
object(Carbon\Carbon)[204]
  public 'date' => string '2017-05-08 00:00:00.000000' (length=26)
  public 'timezone_type' => int 3
  public 'timezone' => string 'UTC' (length=3)

object(Carbon\Carbon)[191]
  public 'date' => string '2017-05-09 00:00:00.000000' (length=26)
  public 'timezone_type' => int 3
  public 'timezone' => string 'UTC' (length=3)

The data in Model instance changed, but save() method does not perform UPDATE queries because $this->attributes['next_exam_at'] == $this->original['next_exam_at'] is true. In fact, two references are pointed to the same object in memory.

Thanks for that. I think I must revise or the part about variable references for PHP...


Animating CollisionShape extents makes KinematicBody2D invisible to Area2D

Operating system or device - Godot version:
Windows 7 64bit
Godot v2.1 32bit
Issue description (what happened, and what was expected):
The setup:
The scene contains a small KinematicBody2D and a bigger Area2D. The KinematicBody2D can be moved with the arrow keys and prints "ENTER" and "EXIT" to the console when it enters or exits the Area2D, respectively. The KinematicBody2D also contains an AnimationPlayer, with a 3 seconds long animation consisting of nothing but a single key at the beginning of a track that animates the extents of the KinematicBody2D's collision shape, it doesn't actually change the extents, just sets them to the same numbers that they already had. This animation does not play automatically or loop, you can make it play once by pressing the Z key.
How it behaves:
If you move inside the area, it will print "ENTER" normally, then if you press Z while inside it will print "EXIT", then 3 seconds later print "ENTER". If you are outside and press Z before entering, it will only print "ENTER" after the 3 seconds are over. The KinematicBody2D is effectively invisible to the Area2D while the animation is playing.
Steps to reproduce:
See sample project.
Link to minimal example project (optional but very welcome):
AnimatingCollisionShape.zip
I apologize in advance if I messed up and this is not a bug.

You can't really animate CollisionShapes with AnimationPlayer, since those are only editor helpers and are disconnected from the actual body shapes. This will change in 3.0 but for now you have to workaround by animating via code (with the shape functions available to CollisionObjects).

I think animating them works now, kind of hacked but it should
On Aug 25, 2016 22:38, "George Marques"<EMAIL_ADDRESS>wrote:

You can't really animate CollisionShapes with AnimationPlayer, since those
are only editor helpers and are disconnected from the actual body shapes.
This will change in 3.0 but for now you have to workaround by animating via
code (with the shape functions available to CollisionObjects
http://docs.godotengine.org/en/latest/classes/class_collisionobject2d.html
).
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/6286#issuecomment-242597811,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF-Z2xE_J9NKTFMYhy0wafKJjbsv6LIWks5qjkOKgaJpZM4JtnpR
.

Yes, when I searched for this issue before posting I saw that it used to be impossible to do, but was apparently added in September 2015. It's a very useful feature and I've been relying on it for my project. Worked fine while all I was colliding against was static bodies but when I threw area2d into the mix it started to misbehave.

Well, if they should work but are not, then it's a bug. Maybe the hacking wasn't so thorough.

@RWmkII Is your animationPlayer set to fixed_process?

Well good thing I apologized in advance, I forgot to set_animation_process_mode(0) and that fixed it. Thanks @puppetmaster and everyone, sorry for wasting your time. Not a bug after all.