Create/update filters

Similar to what can be achieved with a Haskell newtype, provide a function to modify or validate an incoming value.
Example:
def mod(num, denom) do
  inter = rem(num, denom)
  if inter < 0 do denom + inter else denom end
end

defdata Clock do
  hour: mod(integer, 24)
  minute: mod(integer, 60)
end

five_minutes = %Clock{hour: -1, minute: 55}
# => %Clock{hour: 23, minute: 55}

%five_minutes{minute: 102}
# => Clock[hour: 23, minute: 42]

The following code is giving  Compilation error
def mod(num, denom) do
  inter = rem(num, denom)
  if inter < 0 do denom + inter else denom end
end

defdata Clock do
  hour: mod(integer, 24)
  minute: mod(integer, 60)
end

Here is my code

defmodule ClockModule do

  def mod(num, denom) do
    inter = rem(num, denom)
    if inter < 0 do denom + inter else denom end
  end

  defdata Clock do
    hour :: mod(integer, 24) # I replaced ' : ' with ' :: ' and now I get new error "type: mod/2 undefined"
    minute :: mod(integer, 60)
  end
end

Is there a fix for this. I also  tried
defdata Clock, validate: mod do

like it was mentioned in the other issue. I get the following error with this approach
" undefined function defdata/3 "

Validators do not exist yet. This Issue is an idea for a potential future feature.

Is there a fix for this. I also tried
defdata Clock, validate: mod do

defdata Clock do
  hour :: mod(integer, 24) # I replaced ' : ' with ' :: ' and now I get new error "type: mod/2 undefined"
  minute :: mod(integer, 60)
end

The :: operator is for declaring types, not values. Elixir has no concept of liquid types, so we're restricted to the built-in ones, or combinations of them. This means that you cannot express "integers from 0-60" at the type level, but you can enforce this when creating values (like the newtype "smart constructor" tricks in Haskell).
If I'm reading your code correctly, I think that maybe you're trying to do something like this:
defmodule Clock do
  def mod(num, denom) do
    inter = rem(num, denom)
    if inter < 0 do denom + inter else denom end
  end

  defdata do
    hour :: non_neg_integer()
    minute :: non_neg_integer()
  end

  def new(hour, minute) do
    %Clock{
      hour: mod(hour, 24),
      minute: mod(minute, 60)
    }
  end
end

Yep. That's it. Thanks for reply. 💯  👍

Is it possible to amend the issue title to contain "smart constructors" as well? I opened #37, but just realized that it is a duplicate. Would love to look into this when time permits, but I will probably have some questions, if you don't mind. (A note to myself: Oskar Wickström's Validation with Smart Constructors)

Referencing #37

A Haskell or PureScript record would be a simple map in Elixir, right?

Ehhhh, a haskell record would more closely map to a tuple in Elixir.  A row-typed record would map to a map in Elixir.

Thanks! Yeah, I haven't really gotten learn about row-types yet, but as you can read above, I just realized that defdata is really for product types and not records (however stupid this sounds).

Did a bunch of experiments in #37 , please let me know whether you find it worthwhile pursuing those ideas further.

After a couple days, here's may take on #2 and #3, the way Haskell and PureScript smart constructors are working (based on my limited knowledge) where every type is responsible for their own consistency.
Some experiments are documented in #37 using two new macros, Quark.Partial.defpartialx/2 and Algae.defdatax/1 macros (experiments branch at latest commit - the code is a mess, and most probably has lots of parts that is inefficient or downright wrong. Also, some of the outputs are extremely verbose because I was learning about macros as I went along.)

defpartialx does currying by creating named functions that can be overridden, and
defdatax uses type checking based on bootstrapped primitive types (Algae.Prim after PureScript's Prim). The examples are verbose because defdatax is only implemented for full module types yet.

#2 example

def mod(num, denom) do
  inter = rem(num, denom)
  if inter < 0 do denom + inter else denom end
end

defdata Clock do
  hour: mod(integer, 24)
  minute: mod(integer, 60)
end

five_minutes = %Clock{hour: -1, minute: 55}
# => %Clock{hour: 23, minute: 55}

%five_minutes{minute: 102}
# => Clock[hour: 23, minute: 42]

Using smart constructors:
defmodule Clock do
  import Algae

  defdatax do
    hour :: Clock.Hour
    minute :: Clock.Minute
  end

  def new(minutes) do
    mins = rem(minutes, 60)
    hours = div(minutes, 60)
    new(hours, minutes)
  end

  def new(hours, minutes) do
    h = Clock.Hour.new(hours)
    m = Clock.Minute.new(minutes)
    super(h,m)
  end

  def mod(num, denom) do
    inter = rem(num, denom)
    if inter < 0 do denom + inter else inter end
  end

  defmodule Hour do
    defdatax do
      hour :: integer
    end

    def new(hour) do
      hour
      |> Clock.mod(24)
      |> super()
    end
  end

  defmodule Minute do
    defdatax do
      minute :: integer
    end

    def new(minute) do
      minute
      |> Clock.mod(60)
      |> super()
    end
  end
end

Test:
iex(38)> Clock.new(-1, 55)
%Clock{hour: %Clock.Hour{hour: 23}, minute: %Clock.Minute{minute: 55}}

iex(39)> Clock.new(202)
%Clock{hour: %Clock.Hour{hour: 3}, minute: %Clock.Minute{minute: 22}}

#3 example

defdata AcuteTriangle, validate: acute do
  angle1: float
  angle2: float
end

defp acute(%AcuteTriangle{angle1: angle1, angle2: angle2}) do: abs(angle1 - angle2) < 90.0

Using smart constructors:
defmodule AcuteTriangle do
  import Algae
  defdatax do
    angle1 :: float
    angle2 :: float
  end

  def new(alfa, beta) do

    # well, overriding a constructor also overrides type checking...
    super(alfa, beta)

    case abs(alfa - beta) < 90.0 do
      false ->
        raise(ArgumentError, "angles are not acute")
      true ->
        super(alfa, beta)
    end
  end
end

Testing:

iex(47)> AcuteTriangle.new(2.0, 127.0)
** (ArgumentError) angles are not acute
    iex:54: AcuteTriangle.new/2
iex(47)>

iex(42)> AcuteTriangle.new
#Function<1.38387210/1 in AcuteTriangle.new/0>

iex(43)> AcuteTriangle.new.(2)
** (ArgumentError) not float
    (algae) lib/algae/prim.ex:12: Algae.Prim.float/1
    iex:43: anonymous fn/2 in AcuteTriangle.new/1
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:43: AcuteTriangle.new/1

iex(43)> AcuteTriangle.new(2.0)
#Function<3.38387210/1 in AcuteTriangle.new/1>

iex(44)> AcuteTriangle.new(2.0).(27.0)
%AcuteTriangle{angle1: 2.0, angle2: 27.0}

iex(45)> AcuteTriangle.new(2.0).(27)
** (ArgumentError) not float
    (algae) lib/algae/prim.ex:12: Algae.Prim.float/1
    iex:43: anonymous fn/2 in AcuteTriangle.newp/2
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:43: AcuteTriangle.newp/2

iex(45)> AcuteTriangle.new.(2.0).(27.0)
%AcuteTriangle{angle1: 2.0, angle2: 27.0}

iex(46)> AcuteTriangle.new(2.0, 27)
** (ArgumentError) not float
    (algae) lib/algae/prim.ex:12: Algae.Prim.float/1
    iex:43: anonymous fn/2 in AcuteTriangle.newp/2
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:43: AcuteTriangle.newp/2
    iex:50: AcuteTriangle.new/2

iex(46)> AcuteTriangle.new(2.0, 27.0)
%AcuteTriangle{angle1: 2.0, angle2: 27.0}

Type checking and constructor override examples
defmodule Person do
  import Algae

  defdatax do
    name :: string
    age  :: integer
  end
end

defmodule Employee do
  import Algae

  defdatax do
    person :: Person
    role :: string
  end

  def new(person), do: raise(UndefinedFunctionError, "locked")
end

Testing Person:
iex(7)> Person.new
#Function<1.56597431/1 in Person.new/0>

iex(8)> Person.new("lofa")
#Function<3.56597431/1 in Person.new/1>

iex(9)> Person.new.("lofa")
#Function<3.56597431/1 in Person.new/1>

iex(10)> Person.new(27)
** (ArgumentError) not string
    (algae) lib/algae/prim.ex:6: Algae.Prim.string/1
    iex:7: anonymous fn/2 in Person.new/1
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:7: Person.new/1

iex(10)> Person.new.(27)
** (ArgumentError) not string
    (algae) lib/algae/prim.ex:6: Algae.Prim.string/1
    iex:7: anonymous fn/2 in Person.new/1
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:7: Person.new/1

iex(10)> Person.new("lofa").(27)
%Person{age: 27, name: "lofa"}

iex(11)> Person.new("lofa",27)
%Person{age: 27, name: "lofa"}

iex(12)> Person.new("lofa").(:a)
** (ArgumentError) not integer
    (algae) lib/algae/prim.ex:3: Algae.Prim.integer/1
    iex:7: anonymous fn/2 in Person.newp/2
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:7: Person.newp/2

iex(12)> Person.new("lofa", :a)
** (ArgumentError) not integer
    (algae) lib/algae/prim.ex:3: Algae.Prim.integer/1
    iex:7: anonymous fn/2 in Person.newp/2
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:7: Person.newp/2

Testing Employee:
iex(13)> Employee.new
#Function<1.49791001/1 in Employee.new/0>

iex(14)> Employee.new.(27)
** (UndefinedFunctionError) undefined function
    iex:14: Employee.new/1

iex(14)> Employee.new(27)
** (UndefinedFunctionError) undefined function
    iex:14: Employee.new/1

iex(14)> Employee.new(27, "janitor")
** (FunctionClauseError) no function clause matching in Person.type/1

    The following arguments were given to Person.type/1:

        # 1
        27

    iex:7: Person.type/1
    iex:9: anonymous fn/2 in Employee.newp/2
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:9: Employee.newp/2

iex(14)> Employee.new(%Person{name: "lofa", age: 27}, "janitor")
%Employee{person: %Person{age: 27, name: "lofa"}, role: "janitor"}

iex(15)> Employee.new(Person.new.("lofa").(27), "janitor")
%Employee{person: %Person{age: 27, name: "lofa"}, role: "janitor"}

iex(16)> Employee.new(Person.new.(2).(27), "janitor")
** (ArgumentError) not string
    (algae) lib/algae/prim.ex:6: Algae.Prim.string/1
    iex:7: anonymous fn/2 in Person.new/1
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    iex:7: Person.new/1
iex(16)>

A Haskell or PureScript record would be a simple map in Elixir, right?

A Haskell record is here modeled with an Elixir struct

the way Haskell and PureScript smart constructors

Haskell's smart constructors are just regular functions without the handy sugar, and generally hiding the normal constructor.
Special Syntax
Yes, this is the general idea from the issue. I'd be happy to have this functionality if your branch is all good 👍
Overriding Type Checking
Hmm, it would be good if the smart constructor didn't need to do this (also if we can avoid subtyping, that would be ideal.) Algae does need some TLC to add type variables and whatnot (the autogenerated types right now are pretty "dumb"), which may help with this issue, if I'm understanding correctly.
Hiding the Data Constructor
You can hide the main struct syntax constructor with a use, but people can always import and get access to the %Foo{} syntax. Structs aren't as guarded in Elixir, and it's absolutely possible to arbitrarily add or alter fields in an Elixir struct. The most common ways of using a struct will check fields, but they're not guaranteed across all functions.

Special Syntax
Yes, this is the general idea from the issue. I'd be happy to have this functionality if your branch is all good

I'll clean things up, and will do a pull request for you to review then. Thanks!

Overriding Type Checking

You're right, I was totally overthinking this.

Hiding the Data Constructor
You can hide the main struct syntax constructor with a use

I think I'm missing a very basic thing here, because this is new. Would you give an example?

Structs aren't as guarded in Elixir, and it's absolutely possible to arbitrarily add or alter fields in an Elixir struct.

Yes, just realized a couple days ago that even though defdata and defsum are the Algae way to create product types and sum types, but in the end the result is an Elixir struct.

A Haskell record is here modeled with an Elixir struct

Thanks again. As I realized above, I have to stop perceiving Algae as Haskell in Elixir. Algae and others in this family allow more control, but it's still plain Elixir.


Question: How to run the function locally using java-function-invoker?

Following doesn't seem to work:
//  "com.google.cloud.functions.invoker" % "java-function-invoker" % "1.3.1"

def main(args: Array[String]): Unit =
  com
    .google
    .cloud
    .functions
    .invoker
    .runner
    .Invoker
    .main(Array("--target", classOf[MyCloudFunction].getName))

pls ignore ... it's working as expected.

Thank you for reporting. I've updated the dependencies after a long time and will create a new release very soon.


lv_drv_conf.h` #if and #endif mismatch

The file lv_drv_conf.h has a mismatch between the #if statements at start of file and the corresponding #endif statements at the end of the file.
It's purely a semantic issue.  Either the #if or the #endif statements needs to be swapped.
Also, if I edit this file, then I get merge conflicts when pulling changes.  I would have thought this file should only exist as a template file to be copied, and should not exist in the repo.
#ifndef LV_DRV_CONF_H
#define LV_DRV_CONF_H
/*
 * COPY THIS FILE AS lv_drv_conf.h
 */

#if 1 /*Set it to "1" to enable the content*/

....

#endif  /*LV_DRV_CONF_H*/

#endif /*End of "Content enable"*/

Hi,
In the latest version, the order looks like this which seems correct.
#if 0 /*Set it to "1" to enable the content*/

#ifndef LV_DRV_CONF_H
#define LV_DRV_CONF_H

....

#endif  /*LV_DRV_CONF_H*/

#endif /*End of "Content enable"*/

This file (and other ..._conf.h) files can exist in the repo just their content is disabled by #ifan #endif
You shouldn't edit this file directly just copy it as lv_drv_conf.h next to the lv_driverṡ repo.
Merge conflicts are still possible because the template is updated sometimes and if you also edit the template then conflicts can happen.


GraphQL Error for each of the graphic options

When dispalying the Cube in Visualize. For each of the graphic options there will be an error message dispalyed as follows:

There is no error or warnings in Cube Creator.
To reproduce, just follow the the Visualize link above.
Happens in both Edge and Firefox browsers

Hi @tboeni thank you for your note. The link you shared takes me to the data set overview page, could you specify the name of the data set you are referring to?

@sosiology Hi, sure the Cube is called SwissPRTROnlyTruncated_PQ_1 in Cube Creator not sure if this link is more helpful, or do you need the csv file which has been used for integration?

Hi @tboeni
Thank you very much. I think I was able to find the data set you are referring to and reproduce the error (see image below)
In future when taking screenshots, it is always helpful to include the data set in the screenshot (see image below), this helps us reproduce the  error on our side. Thanks in advance!

In the context of this possible "bug", Thomas Bettler suspects that Visualize can not handle a nominal dimension that is a string.
Which is, in his opinion, ok for the Cube schema, but not ok for Visualize.
A clarification about this would be great, thanks @ptbrowne or anyone.

Hi, it seems that the error is related to some of the dimensions having a langString type. We have an explicit warning in the code that in such case, filtering won't work – it seems that Visualize hasn't been able to handle such dimensions for a long time (the code is over two years old).
While I am not exactly sure why this is the case, I wonder if the string dimensions should be formatted in a different way, like having localized schema:name instead of using the data type of langString? At least I think that's the case in other cubes, @FabianCretton was this the way you structured your cubes when it comes to localized strings?

A few questions to better understand:
@tboeni What is this identifier ??

Are you sure all those fields are needed to identify one observation, and could the cause problems when generating a URL ?
@tboeni When I open the cube, The Cube Designer displays nothing and turns undefinitely: could this be an error because of my question here above ? Isn't it normal that Visualize can not load the data if the Cube Designer can not either ?
@bprusinowski I do not really understand your question about langString, I think we use strings with language tag very often (with schema:name but any other property), no ?

Hi @FabianCretton, thanks for your answer! I think here the difference is that in other, working cubes, localised strings are inside a named node, like here:

however inside the cube of @tboeni, it seems to be done via langString literal directly, I think this is the case of Visualize crashing.

@bprusinowski well, this is all perfectly fine RDF to me, so I do not understand why there should be a limitation here.
Was it a decision with Zazuko, and, if so, is it documented somewhere (in the Cube ontology or the Cube Creator User Guide) ?
But on second thought, the Cube Creator allows to have a language tag when defining the CSV mapping, so I think it is rather a "wrong assumption" in visualize, no ?

@bprusinowski  and @tboeni
I come back with some news, as I did create a copy of the cube, correcting what seemed strange to me.
My cube displays now fine in Visualize - cube name "Swissprtr Abfall TEST FAB".
@bprusinowski  I did not change anything about the langSring, so Visualize is fine with that, which is good new :-)
@tboeni, Here are the things I corrected in the cube, I think we can clairify this if it is not clear for you:

The cube's identifier was strange, with all fields. Which would lead to very long URLs, I do not eve know what can happen in this case. I understand why you did that (the redundant lines with only the 'Wert' that is different), but it is not a good way to solve that. For my test, I did simply add a IDFake column with a unique number for each line
In the Cube Designer, you defined 2 'Key dimensions', BetriebsID+Jahr, which are not creating a unique identifier
In the Cube Designer, some dimensions had no name, I do not know how visualize could handle that ? (@bprusinowski )

Thanks a lot for your support @FabianCretton! 💯
At first glance it looked that there was something wrong with langStrings, but I am glad that it turned out to not be a problem. I am still not sure why we have such logic in the app, @ptbrowne does it ring a bell?


[Oracle] Manual commit doesn't work with create tables

If I set the manual commit, then I run this code
CREATE TABLE AABB ( ID NUMBER NULL )

Then I click the Rollback button and run it again I get
Error SQL [955] [42000]: ORA-00955: name is already being used by existing object

Oracle DDL queries aren't transactional.
This is an Oracle "feature".


gettext: <IP_ADDRESS> -> 0.19.6

http://lists.gnu.org/archive/html/bug-gettext/2015-09/msg00008.html
This will triggers a mass rebuild I think…

Looks like thinks still build. Staged, thanks.


Fix wrong owner when creating directory object in S3 API

I tried to add tests for this but that is going to require changing security authentication in the test class which will require bunch of other tests to be fixed.

I tried to add tests for this but that is going to require changing security authentication in the test class which will require bunch of other tests to be fixed.

alluxio-bot, merge this please

alluxio-bot, merge this please


Some icons not loaded when using tree link

maybe something in loading is skipped when opening sidebar directly

fixed with https://github.com/CodeforLeipzig/leipziggiesst/commit/504ef6e39a7b496413cae9100c95e3ba9ba52380


Automatically close brackets etc.

I've done it via lexima plugin because it's simple and does exactly what I need.
https://github.com/SimpleX91/haskell-vim-now/commit/900278f14324b5b2b73c35ddb1fd83ba5ef3e3ea
It's easy to define new rules: https://github.com/cohama/lexima.vim/blob/master/doc/lexima.txt#L244

After some time with it I must admit it's not that useful for Haskell.


Feature request: Bulk or automatic adding of workers

It would be great if a facility was added for bulk adding workers. E.g. suppose I have workers numbered from 0 to 99, it would be great if I could add all 100 workers simultaneously with the same password. Doing this manually rapidly becomes tedious, and browser automation is rather unreliable.
Perhaps even better, would be the automatic creation of workers on connection. So I would set a special "default" worker password for unrecognised worker IDs, and then if a connection was made with an unrecognised worker name, but the correct default password, the worker ID would automatically be added to the workers registered for my account. (Dwarfpool does something similar.)

Bulk adding sounds like a good thing, maybe I will look into this someday. Other than we are open to PRs.
On the fly creation has to be taken care on another level, at your stratum server. Those can easily add new workers to the table and that's all MPOS needs to work.
Maybe adding this as the first write API call is another option. Would allow creation workers in POST from anywhere.

I'm afraid creating a PR for this would be rather outside of my comfort zone, but I'm glad you agree that enabling bulk adding of workers is a good idea. I appreciate that you have other priorities in the short term though.
The write API also sounds like a very good idea, and would certainly answer my use case.

I am closing all old feature requests and ideas since it doesn't seem that anyone is doing a PR against those anyway. Since I won't have the time, no need to keep these ideas open if they are not eventually being implemented.


Cleanup the API for the hello world action

The make hello-world command created a hello world action and associated
it with the action that was created before. However, this API was not
deleted afterwards.

@alvarolopez did you catch this b/c of an error ?

@ddragosd Not an error, but I realized that there was an API defined after the quick-start, so I tried it, but it failed as the action was not already there.


[Question] Basic auth for everyone but local lan net

Hi,
How can I achieve that?. Do I need to add this per vhost?
I used to do this with :
satisfy any;
allow <IP_ADDRESS>/24;
deny all;
auth_basic              "Restricted";
auth_basic_user_file    /etc/nginx/.htpasswd;
Now I have a htpasswd file for each vhost. But the way the template includes the htpasswd file won't allow me to send any other config. Where should I put this setting?
Thanks!!!

Ok I've seem to find where should I use this setting. It should be in /vhost.d/default_location file. Problem is in the template it's added below th auth_basic. So it doesn't work. The custom content of default_location should be included on top of the template:
This is right now :
	{{ if (exists (printf "/etc/nginx/htpasswd/%s" $host)) }}
	auth_basic	"Restricted {{ $host }}";
	auth_basic_user_file	{{ (printf "/etc/nginx/htpasswd/%s" $host) }};
	{{ end }}
	{{ if (exists (printf "/etc/nginx/vhost.d/%s_location" $host)) }}
	include {{ printf "/etc/nginx/vhost.d/%s_location" $host}};
	{{ else if (exists "/etc/nginx/vhost.d/default_location") }}
	include /etc/nginx/vhost.d/default_location;
	{{ end }}

I have created a PR with this simple change. #996


Workspace members: Added symbolic link support

Hi! Can you say a bit more about why this change is important or link to some prior discussion?


calls returning null?

ar Confluence = require("confluence-api");
var config = {
username:  ""
password: "",
baseUrl:  "https://.atlassian.net",
//version: 4 // Confluence major version, optional
};
var confluence = new Confluence(config);
confluence.getSpace("", function(err, data) {
// do something interesting with data; for instance,
// data.results[0].body.storage.value contains the stored markup for the first
// page found in space 'space-name' matching page title 'page-title'
console.log(data)
console.log(err)
});
when I run this the output is a {} and a null.
I know that there is a space and that it has information inside it.
This is connecting to a confluence cloud instance.

Hi @KenHollandWHY - I just ran the unit tests for the project, to check if everything is still healthy, and they are passing. In a quick look at your example, here are some thoughts:
The username and password need to be valid.
The baseUrl needs to have a valid subdomain.
The getSpace call needs to have a valid space name.
I assume you removed the above from the example since that data may be sensitive but check them to be sure they are valid.
If all the above checks out then the next thing I would look at is the content in the space. If you do not have any pages there yet, create a few and they should begin populating the data variable with content.
If none of that checks out, then we will need to troubleshoot more. Hope this helps.


Fix signed request data.

I had to carefully parse out how Akamai's libraries differed from their
documentation, to figure out why this Paw extension wasn't working.
Turns out the hashed data partway through the request message to be
signed, wasn't necessary after all. With this change, the Paw extension
now works for me.

Are you by any chance making a GET request? I just glanced over the Akamai docs once more and the hashed request body is required, but only for POST requests (see the last bullet point under "Request data fields" in the docs). I built this extension for the Akamai endpoints I was working with at the time (all POST), so I didn't catch this.
Unfortunately, I cannot merge in your pull request as-is because it breaks POST requests. If you can update your change to include the hashed request body on POST requests, I can merge it in. Otherwise, I'll make the update when I can.
Nice catch!

Turns out, I was able to make this fix quite quickly once I took a look at the code. See if v0.1 works for you

Thank you! I'll give this version a shot.


Is it possible to save an object id as value instead of title?

I'm retrieving objects like this from the backend:
{
    id: 1
    name: "something"
}

I'm using the component as follows:
<ng2-completer [datasource]="completerData" formControlName="person"></ng2-completer>

Using the component like this will always display the "name" field in the input box (which is correct) but also stores this field as value into the form.
Is it possible to display the "name" field but store the "id" field in the form?

selected event returns a CompleterItem object that has an originalObject member which you can use here.

Yeah, I've seen this, but hoped there would be an alternative.

if it will get multiple requests it can be added.
at the moment there are 2 options:

if you have only several elements - add a hidden form element that will get the value you need
if you have a large number of elements you can create a custom completer (or just wrap ng2-completer) and make ngModel return any value that you need

All due respect to the Author, this control is not very useful without this feature, but very useful with it, the OP is correct, it is the number one priority for real data application use, and yes if we all wanted to write our own controls for everything or dodge it with hidden fields we wouldn't use other controls.

+1 on this, I assumed this was how it worked but ran into problems quite fast.
I think default should be that ngModel/formControl binds to the original object, but it can be configured like ngValue in natiev selects.

There are 2 use cases for this component one as an input with auto complete and the second is as a select. The component is built with the first scenario in mind and therefore ngModel reflects the input text which can be an item from the list but can also be free text.
It's possible to make a select component based on the directives exported by this component but at the moment it's not planned.


Rework constraints guard

Drop const_guards dependency and implement the guards directly. This will lift some current limitations on public visibility.

Codecov Report

Merging #7 (f2463cd) into main (60fcf5e) will decrease coverage by 0.12%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main       #7      +/-   ##
==========================================
- Coverage   99.74%   99.62%   -0.13%
==========================================
  Files           7        7
  Lines         795      793       -2
==========================================
- Hits          793      790       -3
- Misses          2        3       +1

Impacted Files
Coverage Δ

src/deserialize/macros.rs
100.00% <100.00%> (ø)

src/macros/common.rs
100.00% <100.00%> (ø)

src/macros/int.rs
99.33% <100.00%> (-0.67%)
:arrow_down:

src/macros/uint.rs
99.45% <100.00%> (+0.54%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


exporter crashes when unable to parse lines

I've luanched the exporter this way to test it ./postfix_exporter --collector=journald
postfix version: 3.6.4-1ubuntu1.3
time=2024-12-31T09:39:58.031Z level=INFO source=main.go:40 msg="Starting postfix_exporter" version="(version=2.0.2, branch=HEAD, revision=7df2ad63c11a8b923918bdf21bf545a8e25eb26b)"
time=2024-12-31T09:39:58.031Z level=INFO source=main.go:41 msg="Build context" context="(go=go1.23.4, platform=linux/amd64, user=root@50293ece55ce, date=20241218-23:54:59, tags=netgo)"
time=2024-12-31T09:39:58.036Z level=INFO source=tls_config.go:347 msg="Listening on" address=[::]:9907
time=2024-12-31T09:39:58.036Z level=INFO source=tls_config.go:350 msg="TLS is disabled." http2=false address=[::]:9907
time=2024-12-31T09:45:13.819Z level=WARN source=exporter.go:195 msg="Error parsing host reply" record="Dec 31 09:45:13 email1 postfix/smtp[2772652]: 1FEDF46DB7<EMAIL_ADDRESS>relay=inbound-smtp.us-east-1.amazonaws.com[<IP_ADDRESS>]:25, delay=1.2, delays=0.08/0.02/0.67/0.45, dsn=2.0.0, status=sent (250 OK d3gsb37958a0njtf9phnplbs2nq5pjousooa5701)" err="failed to find host reply in \"250 OK d3gsb37958a0njtf9phnplbs2nq5pjousooa5701\""
time=2024-12-31T09:48:13.568Z level=WARN source=exporter.go:195 msg="Error parsing host reply" record="Dec 31 09:48:13 email1 postfix/smtp[2772677]: F197C46DFD<EMAIL_ADDRESS>relay=inbound-smtp.us-east-1.amazonaws.com[<IP_ADDRESS>]:25, delay=1.2, delays=0.09/0.03/0.67/0.44, dsn=2.0.0, status=sent (250 OK 72c7lsnf5n4abk6qb6etkepehlmc8ls16pcsnt81)" err="failed to find host reply in \"250 OK 72c7lsnf5n4abk6qb6etkepehlmc8ls16pcsnt81\""
time=2024-12-31T09:48:13.569Z level=WARN source=exporter.go:195 msg="Error parsing host reply" record="Dec 31 09:48:13 email1 postfix/smtp[2772676]: ECD0146DB7<EMAIL_ADDRESS>relay=inbound-smtp.us-east-1.amazonaws.com[<IP_ADDRESS>]:25, delay=1.2, delays=0.07/0.02/0.72/0.43, dsn=2.0.0, status=sent (250 OK lqeate295ekv4nfppl5qvtn1du72ddb3qjekus81)" err="failed to find host reply in \"250 OK lqeate295ekv4nfppl5qvtn1du72ddb3qjekus81\""
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x95b069]

goroutine 16 [running]:
github.com/sergeymakinen/postfix_exporter/v2/exporter.(*Exporter).scrape.func1({0xc00029bb80, 0x4, 0x4})
        /__w/postfix_exporter/postfix_exporter/exporter/exporter.go:171 +0x249
github.com/sergeymakinen/postfix_exporter/v2/exporter.(*Exporter).scrape(0xc0000a5d40, {{0x0, 0xffffffffffff3875, 0x0}, {0xc000174c70, 0x6}, {0xc000174c77, 0x7}, {0xc000174c7f, 0x4}, ...}, ...)
        /__w/postfix_exporter/postfix_exporter/exporter/exporter.go:294 +0x1691
github.com/sergeymakinen/postfix_exporter/v2/exporter.(*journaldCollector).Write(0xc000012d50, {0xc0001a2000?, 0x108, 0x0?})
        /__w/postfix_exporter/postfix_exporter/exporter/journald.go:53 +0xb5
github.com/coreos/go-systemd/v22/sdjournal.(*JournalReader).Follow(0xc000012d20, 0xc000032540, {0xb68980, 0xc000012d50})
        /github/home/go/pkg/mod/github.com/coreos/go-systemd/v22@v22.5.0/sdjournal/read.go:221 +0x18d
created by github.com/sergeymakinen/postfix_exporter/v2/exporter.collectFromJournald in goroutine 1
        /__w/postfix_exporter/postfix_exporter/exporter/journald.go:42 +0x267

Thanks for the report!
Tried to launch tests with those lines from the log and didn't find any suspicious things, it sounds like an offending line is somewhere after Dec 31 09:48:13 email1 postfix/smtp[2772676]: ECD0146DB7..., do you have any possibility to share a bit of logs after that line?
I just tried to have a brief look at code around exporter.go:171 and not sure what caused this by far but it should be definitely fixed.

is that what you want ?
Dec 31 09:48:13 email1 postfix/smtp[2772676]: ECD0146DB7<EMAIL_ADDRESS>relay=inbound-smtp.us-east-1.amazonaws.com[<IP_ADDRESS>]:25, delay=1.2, delays=0.07/0.02/0.72/0.43, dsn=2.0.0, status=sent (250 OK lqeate295ekv4nfppl5qvtn1du72ddb3qjekus81)
Dec 31 09:48:13 email1 postfix/qmgr[2501036]: ECD0146DB7: removed
Dec 31 09:48:36 email1 postfix/smtpd[2772670]: connect from server[xxx.xxx.xxx.xx]
Dec 31 09:48:36 email1 postfix/smtpd[2772670]: A773746DB7: client=server[xxx.xxx.xxx.xx]
Dec 31 09:48:36 email1 postfix/cleanup[2772674]: A773746DB7<EMAIL_ADDRESS>

Yeah, thanks, although it's not related to these logs (thank you anyway!), I think I got it and will post a fix shortly.


discoverCharacteristics returning empty array

Hello!
Info:
OSX El Capitan, 10.11.06
Node 6.6.0
BLE Device: Bean LBM313-2540-256
I'm able to connect to a specific device, discover the service "a495ff10c5b14b44b5121370f02d74de", and discover the characteristic "a495ff22c5b14b44b5121370f02d74de".
The issue is that I'm unable to get any characteristic data. It just returns an empty array. Here is the code.
noble.on('stateChange', function(state) {
    console.log(state)
    if (state === 'poweredOn') {
        // only scan for devices advertising these service UUID's (default or empty array => any peripherals
        var serviceUuids = ["a495ff10c5b14b44b5121370f02d74de"]

        // allow duplicate peripheral to be returned (default false) on discovery event
        var allowDuplicates = false;

        console.log("scan started")
        noble.startScanning(serviceUuids, allowDuplicates);

        openNow()

    } else {
        noble.stopScanning();
    }
});

function openNow() {

    noble.on('discover', function(peripheral) {
        peripheral.connect(function(error) {
            console.log('connected to peripheral: ' + peripheral.uuid);
            peripheral.discoverServices(["a495ff10c5b14b44b5121370f02d74de"], function(error, services) {
                var beanService = services[0];
                console.log('discovered service');

                beanService.discoverCharacteristics(["a495ff22c5b14b44b5121370f02d74de"], function(error, characteristics) {
                    var beanCharacteristic = characteristics[0];
                    console.log('discovered characteristics ');
                    console.log(characteristics)
                    console.log(error)

                    // can only do this part if I successfully get characteristics data.
                    // beanCharacteristic.read(function(error, data) {
                    //     buffer_to_json = JSON.stringify(data);
                    //     json = JSON.parse(buffer_to_json);
                    //     console.log(json.data[0])
                    // });

                });
            });
        });
    });
}

Here is the console output, note that the array that was supposed to include characteristic data is empty. And error returns null.
node app.js
poweredOn
scan started
connected to peripheral: b6f14f2f1aa94c279447067389bbeeab
discovered service
discovered characteristics
[]
null

Using a bluetooth client for OSX (lightblue), I'm able to read/write the same service/characteristics for this very same device.
Thanks in advance.

Hi @geraldoramos,
Taking a look at @jacobrosenthal's library, the "scratch two" characteristic is actually under the scratch service which has a UUID of "a495ff20c5b14b44b5121370f02d74de".
See: https://github.com/jacobrosenthal/ble-bean/blob/aa9ec821727fc2783751a6a404dd13a4b923bf9e/lib/ScratchTwo.js


Bitwise operator overloading

Added C++ code for issue #1701 Bitwise Operator Overloading, @tarun26091999 @anubhavitis @veenit1802 @ssaksham @malavikarajeshvikraman @Rohan27s, @rish-singhal sir can you please review my code.

Hello, @Rohan27s sir this time I had done everything in the right way can you please review it once again and I'm really sorry for the inconvenience in the last pull request.

@krishna-NIT sir done

resolve the conflict

resolve the conflict

@Mugdha-Hazra


Fix back button Android

Returning changes to pr/260
For some reason, this change was lost in the new versions.

Hey @junioroga , thanks for the PR! Just wanted to chime in to say that I do have noticed it and I'll probably review it this weekend 👍

Hi @mmazzarolo, thanks for the reply, I look forward to it!


696 Add Support for Plain Text Format

Closes #696
How to try it out:

Run server
Build it
Run the following commands:./zally lint --format=text ../../server/src/test/resources/fixtures/api_spp.json

👍

:+1:

:+1:

:+1:


SynchronizedObservableCollection RaceCondition

I have been using a modified version of your SynchronizedObservableCollection for some time, but have recently came across an issue with the the combination of Property and Collection change notifications being "dispatched" (pushed onto the context) separately.
In many of the methods the notifications are ordered as:
OnPropertyChanged("Count");
OnPropertyChanged("Item[]");
OnCollectionChanged(NotifyCollectionChangedAction.Remove, value, index);
Which is exactly the order from the ObservableCollection source; however since here the property and collection changes are being dispatched separately, there is a possibility of other operations being pushed onto the context in-between those notifications (a semi race condition). In some cases this means that a bound control (I am using WPF) responds to the property change notification first and then processes the collection change separately - effectively updating its state twice. This can lead to very strange behaviour such as two duplicate items being added to a UI itemspanel after a single Add.
The fix is simply to combine the property and collection notifications into a single dispatch operation - which is a good performance idea anyway. My attached code has a number of modifications that are likely not quite as universally applicable, but you can see how the notifications have been grouped into specific methods and are dispatched together.
Thank you and kind regards!
SynchronizedObservableCollection.zip

Sorry for the delayed response, somehow this slipped passed me. Really appreciate your feedback and providing code on how you resolved this issue. I'll see if I can duplicate your implementation while retaining the SynchronizationContext for compatibility.

Not to worry. In fact, since writing that message I have completely changed my own approach. I found that by using WPF's BindingOperations.EnableCollectionSynchronization() method and BindingOperations.CollectionRegistering event in .net 4.5, I was able to write a simpler Collection that requires no dispatching/context switching, and self synchronizes only when needed. The EnableCollectionSync method even has an overload to allow you to provide your own synchronization wrapper, so the ReaderWriter can still be used (albeit I've moved away from it due to the unmanaged IDisposable requirement).
I still use the above method in certain scenarios where I'm using third party controls that have custom/broken CollectionView implementations that don't seem to play nicely with 4.5.  I'll share some code soon. Cheers!

Change implemented in commit https://github.com/CoryCharlton/CCSWE.Core/commit/50c621f6cf2aa37d404050da6cbccdd174349447


Remove blocking comms from dist_grid (IFS-2748)

Upstream contributions from contrib changes.

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


remove NBMapConfigurable, require NBConfigurable instead

A bug was found where an NBMapConfigurable was modified to use the NBConfigurable interface, but the calling layer was aligned to the change. The NBMapConfigurable interface should be removed unless it can be programmatically gauranteed to be called in the case that the primary interface is not supported.

NBMapConfigurable is actually replaced by NBCanConfigure. The only difference is the method signature of ApplyConfig. For the former it takes a Map<String, ?> and the later takes a NBConfiguration.
To get from former to later public NBConfiguration apply(Map<String, ?> config) in ConfigModel.


move utility file

just moved the InterfaceOrientationObserverView to the Utility folder

Closing because I am going to create a new PR for a different fix and I'll include this one.


Changed the Arrow Flight SQL Server link to Voltron Data repo: SQLFlite

I have taken the "GizmoSQL" repo private - this change is needed to allow folks to have the open-source option.

FYI @davidgasquez


[BugFix] Ignore sql_select_limit during creating rollup mv

What type of PR is this：

[x] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #21365
Problem Summary(Required) ：

Ignore sql_select_limit during creating rollup mv
Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[ ] I have checked the version labels which the pr will be auto backported to target branch

[ ] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

[FE PR Coverage Check]
:heart_eyes: pass : 3 / 3 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/sql/ast/CreateMaterializedViewStmt.java
3
3
100.00%
[]

[FE PR Coverage Check]
:heart_eyes: pass : 3 / 3 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/sql/ast/CreateMaterializedViewStmt.java
3
3
100.00%
[]


Feature: URL Parameters

Added option for wildcard-like URLs in HTTPServer.route.
It is now possible to do something like this:
@server.route("/something/<param_1>/<param_2>")
def name_parameters(request: HTTPRequest, param_1: str,  param_2: str = None):
    ...

and access parameters inside handler function, similarly to Django and I belive Flask.
Also updated examples to show new functionality.
There is literally no change to the API so this is 100% backwards compatible, if one does not use <> in route call, nothing changes for them.
Additionally:

Fixed one small issue where an empty query params was created

These changes should fulfill #42.

@FoamyGuy Can I get an update on this PR? I already have some more functionality in mind, but I would like to finish this one first.


go2nix: 1.1.1 -> 1.2.0

Motivation for this change
https://github.com/kamilchm/go2nix/releases/tag/v1.2.0
https://github.com/kamilchm/go2nix/issues/53
Things done

[x] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

also back ported to 17.03, because it contains better for defaults, when people issuing pull requests.


Appstudio update test-component-pac-olou

Pipelines as Code configuration proposal

Pipelines as Code CI/test-component-pac-olou-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
7 seconds
init

✅ Succeeded
17 seconds
clone-repository

✅ Succeeded
39 seconds
build-container

✅ Succeeded
19 seconds
inspect-image

✅ Succeeded
18 seconds
deprecated-base-image-check

✅ Succeeded
1 minute
clamav-scan

✅ Succeeded
1 minute
clair-scan

✅ Succeeded
17 seconds
sbom-json-check

✅ Succeeded
19 seconds
label-check

✅ Succeeded
20 seconds
optional-label-check

✅ Succeeded
6 seconds
show-sbom

✅ Succeeded
6 seconds
show-summary

Pipelines as Code CI/test-component-pac-olou-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
7 seconds
init

✅ Succeeded
13 seconds
clone-repository

✅ Succeeded
25 seconds
build-container

✅ Succeeded
13 seconds
inspect-image

✅ Succeeded
12 seconds
deprecated-base-image-check

✅ Succeeded
34 seconds
clamav-scan

✅ Succeeded
8 seconds
clair-scan

✅ Succeeded
10 seconds
sbom-json-check

✅ Succeeded
10 seconds
optional-label-check

✅ Succeeded
10 seconds
label-check

✅ Succeeded
7 seconds
show-sbom

✅ Succeeded
8 seconds
show-summary


 Component doesn't auto populate data-values with RDF Data in certain formats

When trying to autopopulate data-values for the  editor, I noticed that data-values are not automatically entered if the data-shapes follow a specific format, such as:
<http://example.org/PersonShape> <http://www.w3.org/ns/shacl#property> _:bc_0_n3-0 .
<http://example.org/PersonShape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/shacl#NodeShape> .
_:bc_0_n3-0 <http://www.w3.org/ns/shacl#path> <http://xmlns.com/foaf/0.1/forname> .

or
<http://example.org/PersonShape> <http://www.w3.org/ns/shacl#property> <http://example.org/shacl/Property0>;
a <http://www.w3.org/ns/shacl#NodeShape>.
<http://example.org/shacl/Property0> <http://www.w3.org/ns/shacl#path> <http://xmlns.com/foaf/0.1/forname>.

Result without data-values-subject:

Result with data-values-subject:

However, it works, when using a format, such as:
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:PersonShape a sh:NodeShape ;
  sh:targetClass foaf:Person ;

  sh:property [
    sh:path foaf:forname ;
  ] .

Result without data-values-subject:

Result with data-values-subject:

shacl-form element of the above:
<shacl-form
      data-values-subject="http://example.org/Natanael"
      data-shapes='@prefix foaf: <http://xmlns.com/foaf/0.1/> .
      @prefix ex: <http://example.org/> .
      @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
      @prefix sh: <http://www.w3.org/ns/shacl#> .
      @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

      ex:PersonShape a sh:NodeShape ;
        sh:targetClass foaf:Person ;

        sh:property [
          sh:path foaf:forname ;
        ] .
    '
    data-values="
    <http://example.org/Natanael> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/> .
    <http://example.org/Natanael> <http://xmlns.com/foaf/0.1/forname> 'Natanael' <http://example.org/> .
    "
></shacl-form>

Is it possible to fix this error, without changing the data-shapes format?

Hi and thanks for the feedback. When binding a data graph to the form, <shacl-form> only has some basic logic to determine the shacl shape to use for the values, one of which is using sh:targetClass. In your case, the triple
<http://example.org/Natanael> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>

results in using ex:PersonShape, because of its corresponding sh:targetClass definition. When this triple is missing (I guess this is the case in your first example), shacl-form doesn't know what shacl shape the data conforms to.
BTW, you can always manually set the shacl shape on the HTML element like so:
<shacl-form data-shape-subject="http://example.org/PersonShape" ...></shacl-form>

Thank you very much, that helped!


Restructure messages

Right now the terminal spits out messages that look like this:
message {"devices"=>"f8700524-cd0c-49e4-b46b-3b5f5b206466", "params"=>{"speed"=>100}, "method"=>"single_command.HOME ALL", "id"=>"01758acd-1f22-4f7e-85e7-d14441c830bf", "fromUuid"=>"73425170-2660-49de-acd9-6fad4989aff6"}
I think they should be rearranged as: message {"method", "params", "devices", "fromUuid", "id"}
This ordering is more readable and accurate to the order of importance of the message contents.

This is legacy stuff from when we were on MeshBlu.


Handle items which have more than one page of full text

An example page (from Chronicling America) that has full text, but where the item (the newspaper issue) has multiple full text files.
Perhaps split full text into a separate table?
ID: http://www.loc.gov/item/2012218613/1884-08-13/ed-1/
{
  "item": {
    "id": "http://www.loc.gov/item/2012218613/1884-08-13/ed-1/",
    "aka": [
      "http://www.loc.gov/item/2012218613/1884-08-13/ed-1/",
      "http://www.loc.gov/resource/2012218613/1884-08-13/ed-1/"
    ],
    "url": "https://www.loc.gov/item/2012218613/1884-08-13/ed-1/",
    "date": "1884-08-13",
    "item": {
      "date": "1881",
      "batch": [
        "scu_henryjohnson_ver01"
      ],
      "dates": [
        "1884-08-13"
      ],
      "genre": [
        "Newspapers"
      ],
      "notes": [
        "Weekly",
        "Began in 1881. Ceased in 1900?",
        "Archived issues are available in digital format as part of the Library of Congress Chronicling America online collection.",
        "Description based on: Oct. 5, 1881.",
        "Latest issue consulted: Vol. 54, no. 26 (Dec. 19, 1900).",
        "News and herald (Winnsboro, S.C. : 1901) 2333-1763 (DLC)<PHONE_NUMBER> (OCoLC)783781677"
      ],
      "title": "The Fairfield news and herald (Winnsboro, S.C.), August 13, 1884",
      "format": [
        "newspaper"
      ],
      "medium": "4 pages",
      "language": [
        "eng"
      ],
      "location": [
        "Fairfield County (S.C.)",
        "South Carolina--Fairfield County"
      ],
      "raw_lccn": "<PHONE_NUMBER>",
      "subjects": [
        "Fairfield County (S.C.)--Newspapers",
        "South Carolina--Fairfield County",
        "United States--South Carolina--Fairfield--Winnsboro"
      ],
      "call_number": [
        "Newspaper"
      ],
      "date_issued": "1884-08-13",
      "other_title": [
        "News and herald"
      ],
      "reel_numbers": [
        "00237288403"
      ],
      "other_formats": [
        "https://tile.loc.gov/storage-services/service/ndnp//scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/1884081301_1.xml",
        "http://lccn.loc.gov/2012218613/marcxml"
      ],
      "digitized_label": "Present",
      "newspaper_title": [
        "The Fairfield news and herald."
      ],
      "contributor_names": [
        "University of South Carolina"
      ],
      "created_published": [
        "Winnsboro, S.C., August 13, 1884"
      ],
      "place_of_publication": "Winnsboro, S.C.",
      "library_of_congress_control_number": "2012218613"
    },
    "site": [
      "chroniclingamerica"
    ],
    "type": [
      "newspaper"
    ],
    "batch": [
      "scu_henryjohnson_ver01"
    ],
    "dates": [
      {
        "1884": "https://www.loc.gov/search/?dates=1884/1884&fo=json"
      }
    ],
    "genre": [
      "Newspapers"
    ],
    "group": [
      "ndnp/scu",
      "university-of-south-carolina-columbia-sc-awardee"
    ],
    "index": 1,
    "notes": [
      "Weekly",
      "Began in 1881. Ceased in 1900?",
      "Archived issues are available in digital format as part of the Library of Congress Chronicling America online collection.",
      "Description based on: Oct. 5, 1881.",
      "Latest issue consulted: Vol. 54, no. 26 (Dec. 19, 1900).",
      "News and herald (Winnsboro, S.C. : 1901) 2333-1763 (DLC)<PHONE_NUMBER> (OCoLC)783781677"
    ],
    "score": 8.842241,
    "title": "The Fairfield news and herald (Winnsboro, S.C.), August 13, 1884",
    "format": [
      {
        "newspaper": "https://www.loc.gov/search/?fa=original_format:newspaper&fo=json"
      }
    ],
    "medium": "4 pages",
    "number": [
      "1",
      "2012218613",
      "00237288403"
    ],
    "partof": [
      {
        "url": "https://www.loc.gov/search/?fa=partof:the+fairfield+news+and+herald+%28winnsboro,+s.c.%29+1881-1900&fo=json",
        "count": 711,
        "title": "the fairfield news and herald (winnsboro, s.c.) 1881-1900"
      },
      {
        "url": "https://www.loc.gov/collections/chronicling-america/?fo=json",
        "count": 266086,
        "title": "chronicling america"
      },
      {
        "url": "https://www.loc.gov/search/?fa=partof:serial+and+government+publications+division&fo=json",
        "count": 275151,
        "title": "serial and government publications division"
      }
    ],
    "rights": [
      "
The Library of Congress believes that the newspapers in Chronicling America are in the public domain or have no known copyright restrictions.  Newspapers published in the United States more than 95 years ago are in the public domain in their entirety. Any newspapers in Chronicling America that were published less than 95 years ago are also believed to be in the public domain, but may contain some copyrighted third party materials. Researchers using newspapers published less than 95 years ago should be alert for modern content (for example, registered and renewed for copyright and published with notice) that may be copyrighted.  Responsibility for making an independent legal assessment of an item and securing any necessary permissions ultimately rests with persons desiring to use the item.
\n
The NEH awardee responsible for producing each digital object is presented in the Chronicling America page display, below the page image  – e.g. Image produced by the Library of Congress. For more information on current NDNP awardees, see https://www.loc.gov/ndnp/listawardees.html.
\n
For more information on Library of Congress policies and disclaimers regarding rights and reproductions, see https://www.loc.gov/homepage/legal.html
"
    ],
    "subject": [
      "newspapers",
      "fairfield county",
      "fairfield county (s.c.)",
      "fairfield",
      "united states",
      "winnsboro",
      "south carolina"
    ],
    "language": [
      "english"
    ],
    "location": [
      "united states",
      "south carolina",
      "fairfield county",
      "winnsboro",
      "fairfield"
    ],
    "raw_lccn": "<PHONE_NUMBER>",
    "shelf_id": "2012218613, 1884-08-13, Edition 1",
    "subjects": [
      {
        "fairfield": "https://www.loc.gov/search/?fa=subject:fairfield&fo=json"
      },
      {
        "fairfield county": "https://www.loc.gov/search/?fa=subject:fairfield+county&fo=json"
      },
      {
        "fairfield county (s.c.)": "https://www.loc.gov/search/?fa=subject:fairfield+county+%28s.c.%29&fo=json"
      },
      {
        "newspapers": "https://www.loc.gov/search/?fa=subject:newspapers&fo=json"
      },
      {
        "south carolina": "https://www.loc.gov/search/?fa=subject:south+carolina&fo=json"
      },
      {
        "united states": "https://www.loc.gov/search/?fa=subject:united+states&fo=json"
      },
      {
        "winnsboro": "https://www.loc.gov/search/?fa=subject:winnsboro&fo=json"
      }
    ],
    "_version_":<PHONE_NUMBER>677114400,
    "campaigns": [],
    "digitized": true,
    "image_url": [
      "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/full/pct:3.125/0/default.jpg#h=342&w=246",
      "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/full/pct:6.25/0/default.jpg#h=684&w=492"
    ],
    "item_type": "issue",
    "languages": [
      {
        "english": "https://www.loc.gov/search/?fa=language:english&fo=json"
      }
    ],
    "locations": [
      {
        "fairfield": "https://www.loc.gov/search/?fa=location:fairfield&fo=json"
      },
      {
        "fairfield county": "https://www.loc.gov/search/?fa=location:fairfield+county&fo=json"
      },
      {
        "south carolina": "https://www.loc.gov/search/?fa=location:south+carolina&fo=json"
      },
      {
        "united states": "https://www.loc.gov/search/?fa=location:united+states&fo=json"
      },
      {
        "winnsboro": "https://www.loc.gov/search/?fa=location:winnsboro&fo=json"
      }
    ],
    "mime_type": [
      "image/jp2",
      "application/pdf",
      "text/xml",
      "image/jpeg"
    ],
    "resources": [
      {
        "url": "https://www.loc.gov/resource/2012218613/1884-08-13/ed-1/",
        "files": 4,
        "image": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/full/pct:3.125/0/default.jpg",
        "word_coordinates": "https://tile.loc.gov/text-services/word-coordinates-service"
      }
    ],
    "timestamp": "2020-04-24T10:40:49.058Z",
    "call_number": [
      "Newspaper"
    ],
    "date_issued": "1884-08-13",
    "description": [
      "Winnsboro, S.C."
    ],
    "hassegments": true,
    "number_lccn": [
      "2012218613"
    ],
    "number_reel": [
      "00237288403"
    ],
    "other_title": [
      "News and herald"
    ],
    "contributors": [
      {
        "university of south carolina": "https://www.loc.gov/search/?fa=contributor:university+of+south+carolina&fo=json"
      }
    ],
    "extract_urls": [
      "file:/service/ndnp//scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/1884081301_1.xml#ndnp/scu"
    ],
    "partof_title": [
      "the fairfield news and herald (winnsboro, s.c.) 1881-1900"
    ],
    "reel_numbers": [
      "00237288403"
    ],
    "location_city": [
      "winnsboro"
    ],
    "online_format": [
      "image",
      "pdf",
      "online text"
    ],
    "other_formats": [
      {
        "link": "//tile.loc.gov/storage-services/service/ndnp//scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/1884081301_1.xml",
        "label": "MODSXML Record"
      },
      {
        "link": "//lccn.loc.gov/2012218613/marcxml",
        "label": "MARCXML Record"
      }
    ],
    "location_state": [
      "south carolina"
    ],
    "locations_city": [
      {
        "winnsboro": "https://www.loc.gov/search/?fa=location_city:winnsboro&fo=json"
      }
    ],
    "number_edition": [
      "1"
    ],
    "digitized_label": "Present",
    "display_offsite": true,
    "location_county": [
      "fairfield"
    ],
    "locations_state": [
      {
        "south carolina": "https://www.loc.gov/search/?fa=location_state:south+carolina&fo=json"
      }
    ],
    "newspaper_title": [
      "The Fairfield news and herald."
    ],
    "original_format": [
      "newspaper"
    ],
    "partof_division": [
      "serial and government publications division"
    ],
    "location_country": [
      "united states"
    ],
    "locations_county": [
      {
        "fairfield": "https://www.loc.gov/search/?fa=location_county:fairfield&fo=json"
      }
    ],
    "numeric_shelf_id": 188408131,
    "subject_headings": [
      "Fairfield County (S.C.)--Newspapers",
      "South Carolina--Fairfield County",
      "United States--South Carolina--Fairfield--Winnsboro"
    ],
    "access_restricted": false,
    "contributor_names": [
      "University of South Carolina"
    ],
    "created_published": [
      "Winnsboro, S.C., August 13, 1884"
    ],
    "extract_timestamp": "2020-04-23T19:41:22.635Z",
    "locations_country": [
      {
        "united states": "https://www.loc.gov/search/?fa=location_country:united+states&fo=json"
      }
    ],
    "partof_collection": [
      "chronicling america"
    ],
    "composite_location": [
      "0/united states/",
      "1/united states/south carolina/",
      "2/united states/south carolina/fairfield/",
      "3/united states/south carolina/fairfield/winnsboro/"
    ],
    "dates_of_publication": "1881-1900",
    "place_of_publication": "Winnsboro, S.C.",
    "publication_frequency": [
      "weekly"
    ],
    "library_of_congress_control_number": "2012218613"
  },
  "options": {
    "id": "2012218613/1884-08-13/ed-1/",
    "all": null,
    "clip": null,
    "host": "www.loc.gov",
    "ical": false,
    "iiif": false,
    "item": null,
    "keys": null,
    "port": "443",
    "count": null,
    "dates": null,
    "embed": [],
    "field": null,
    "index": null,
    "items": null,
    "style": null,
    "embed!": [],
    "format": "json",
    "method": "GET",
    "onsite": false,
    "region": "",
    "scheme": "https",
    "sortBy": null,
    "target": null,
    "latlong": null,
    "referer": null,
    "site_id": null,
    "callback": null,
    "distance": null,
    "duration": 0.43028783798217773,
    "language": null,
    "operator": null,
    "resource": "",
    "searchIn": null,
    "segments": null,
    "template": "item/base",
    "attribute": null,
    "delimiter": null,
    "is_portal": null,
    "newSearch": null,
    "path_info": "/item/2012218613/1884-08-13/ed-1/",
    "proxypath": null,
    "site_type": null,
    "solrQuery": "",
    "sortOrder": null,
    "startPage": null,
    "suggested": null,
    "timestamp":<PHONE_NUMBER>.321504,
    "attribute!": "more_like_this,related_items,cite_this",
    "cache_tags": [
      "ndnp/scu",
      "university-of-south-carolina-columbia-sc-awardee",
      "gmd.mar",
      "catalog",
      "general-maps",
      "main-catalog",
      "wpalh",
      "federal-writers-project"
    ],
    "digital_id": null,
    "release_id": 123456789,
    "api_version": "1",
    "app_context": null,
    "facetLimits": "",
    "facetPrefix": null,
    "facet_count": null,
    "facet_style": null,
    "request_url": "https://www.loc.gov/item/2012218613/1884-08-13/ed-1/?at%21=more_like_this%2Crelated_items%2Ccite_this&fo=json",
    "searchTerms": "",
    "unionFacets": "",
    "access_group": [
      ""
    ],
    "excludeTerms": null,
    "new_clip_url": false,
    "query_string": "at%21=more_like_this%2Crelated_items%2Ccite_this&fo=json",
    "attribute_map": null,
    "clip_rotation": null,
    "default_count": 25,
    "display_level": null,
    "inputEncoding": "UTF-8",
    "content_filter": null,
    "downloadOption": null,
    "outputEncoding": "UTF-8",
    "redirect_proxy": false,
    "request_params": {
      "fo": [
        "json"
      ],
      "at!": [
        "more_like_this,related_items,cite_this"
      ]
    },
    "access_group_raw": "",
    "clip_image_width": null,
    "redirect_to_item": null,
    "page_has_campaign": false,
    "resource_sequence": null,
    "webcast_permalink": null,
    "application_version": "$Revision$",
    "content_replacement": ""
  },
  "locations": null,
  "resources": [
    {
      "url": "https://www.loc.gov/resource/2012218613/1884-08-13/ed-1/",
      "files": [
        [
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0129.jp2",
            "use": "",
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/info.json",
            "size": 10797093,
            "width": 7886,
            "height": 10952,
            "mimetype": "image/jp2"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0129.pdf",
            "use": "",
            "mimetype": "application/pdf"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0129.xml",
            "use": "",
            "mimetype": "text/xml"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/full/pct:3.125/0/default.jpg",
            "width": 246,
            "height": 342,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/full/pct:6.25/0/default.jpg",
            "width": 492,
            "height": 684,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/info.json",
            "size": 10797093,
            "title": "Image 1 of The Fairfield news and herald (Winnsboro, S.C.), August 13, 1884",
            "width": 7886,
            "height": 10952,
            "language": [
              "English"
            ],
            "mimetype": "application/json",
            "reel_number": "00237288403",
            "section_label": null
          },
          {
            "use": "text",
            "mimetype": "text/plain",
            "fulltext_service": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0129.xml&format=alto_xml&full_text=1",
            "word_coordinates": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0129.xml&format=alto_xml"
          }
        ],
        [
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0130.jp2",
            "use": "",
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0130/info.json",
            "size": 10819646,
            "width": 7853,
            "height": 11021,
            "mimetype": "image/jp2"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0130.pdf",
            "use": "",
            "mimetype": "application/pdf"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0130.xml",
            "use": "",
            "mimetype": "text/xml"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0130/full/pct:3.125/0/default.jpg",
            "width": 245,
            "height": 344,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0130/full/pct:6.25/0/default.jpg",
            "width": 490,
            "height": 688,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0130/info.json",
            "size": 10819646,
            "title": "Image 2 of The Fairfield news and herald (Winnsboro, S.C.), August 13, 1884",
            "width": 7853,
            "height": 11021,
            "language": [
              "English"
            ],
            "mimetype": "application/json",
            "reel_number": "00237288403",
            "section_label": null
          },
          {
            "use": "text",
            "mimetype": "text/plain",
            "fulltext_service": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0130.xml&format=alto_xml&full_text=1",
            "word_coordinates": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0130.xml&format=alto_xml"
          }
        ],
        [
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0131.jp2",
            "use": "",
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0131/info.json",
            "size": 10925889,
            "width": 7931,
            "height": 11020,
            "mimetype": "image/jp2"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0131.pdf",
            "use": "",
            "mimetype": "application/pdf"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0131.xml",
            "use": "",
            "mimetype": "text/xml"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0131/full/pct:3.125/0/default.jpg",
            "width": 247,
            "height": 344,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0131/full/pct:6.25/0/default.jpg",
            "width": 495,
            "height": 688,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0131/info.json",
            "size": 10925889,
            "title": "Image 3 of The Fairfield news and herald (Winnsboro, S.C.), August 13, 1884",
            "width": 7931,
            "height": 11020,
            "language": [
              "English"
            ],
            "mimetype": "application/json",
            "reel_number": "00237288403",
            "section_label": null
          },
          {
            "use": "text",
            "mimetype": "text/plain",
            "fulltext_service": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0131.xml&format=alto_xml&full_text=1",
            "word_coordinates": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0131.xml&format=alto_xml"
          }
        ],
        [
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0132.jp2",
            "use": "",
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0132/info.json",
            "size": 10832223,
            "width": 7870,
            "height": 11010,
            "mimetype": "image/jp2"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0132.pdf",
            "use": "",
            "mimetype": "application/pdf"
          },
          {
            "url": "https://tile.loc.gov/storage-services/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0132.xml",
            "use": "",
            "mimetype": "text/xml"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0132/full/pct:3.125/0/default.jpg",
            "width": 245,
            "height": 344,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "url": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0132/full/pct:6.25/0/default.jpg",
            "width": 491,
            "height": 688,
            "levels": 1,
            "mimetype": "image/jpeg"
          },
          {
            "info": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0132/info.json",
            "size": 10832223,
            "title": "Image 4 of The Fairfield news and herald (Winnsboro, S.C.), August 13, 1884",
            "width": 7870,
            "height": 11010,
            "language": [
              "English"
            ],
            "mimetype": "application/json",
            "reel_number": "00237288403",
            "section_label": null
          },
          {
            "use": "text",
            "mimetype": "text/plain",
            "fulltext_service": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0132.xml&format=alto_xml&full_text=1",
            "word_coordinates": "https://tile.loc.gov/text-services/word-coordinates-service?segment=/service/ndnp/scu/batch_scu_henryjohnson_ver01/data/2012218613/00237288403/1884081301/0132.xml&format=alto_xml"
          }
        ]
      ],
      "image": "https://tile.loc.gov/image-services/iiif/service:ndnp:scu:batch_scu_henryjohnson_ver01:data:2012218613:00237288403:1884081301:0129/full/pct:3.125/0/default.jpg",
      "word_coordinates": "https://tile.loc.gov/text-services/word-coordinates-service"
    }
  ],
  "timestamp":<PHONE_NUMBER>752,
  "title_url": "https://www.loc.gov/item/2012218613",
  "next_issue": "https://www.loc.gov/item/2012218613/1884-08-20/ed-1/?fo=json",
  "calendar_url": "https://www.loc.gov/item/2012218613/?st=calendar",
  "previous_issue": "https://www.loc.gov/item/2012218613/1884-08-06/ed-1/?fo=json",
  "articles_and_essays": null
}

Added in #21


x/pkgsite: requesting new versions of existing modules causes "oops" errors and 404s

For example<EMAIL_ADDRESS>is a 404 and when I request it via the UI, I just get:

Oops! Something went wrong.

Refreshing just gets me back to the start. This version has been published and requested for hours, so it's not a caching thing.
Someone else has been experiencing the exact same issue on Slack with other modules:
<EMAIL_ADDRESS><EMAIL_ADDRESS>So it seems like pkgsite's backend is having some errors pulling in new versions. CC @jba @julieqiu
I also wonder if the pages could give just a little bit more detail. It's hard to tell what kind of bug this is if all I get is an "oops".

dup of the pinned #46527 ?

Yes, we continue to have delays. The pinned issue will have progress reports.

I saw that issue but I assumed this was unrelated, since you said "new modules" in that thread and these are not new modules.

Sorry, new module versions.

https://github.com/golang/go/issues/46350
https://github.com/golang/go/issues/46527
https://github.com/golang/go/issues/46535
https://github.com/golang/go/issues/46538

Looks like this has been an issue since at least https://github.com/golang/go/issues/45703 (April 2021), @julieqiu any comment?

Duplicate of #46527


[FEA] Fix decimal average to match Spark

Is your feature request related to a problem? Please describe.
Spark changed how they do a decimal divide in 3.4.0 to be closer to how we do a divide. It removes a lot of the ugliness that required it to have the lhs and rhs be the exact same type, including precision and scale.  Well as a part of doing an average Spark would first do a divide and then cast the result to the final output type, which is different from what divide thinks the output type should be.  Because of this there are often cases in average where the output value was rounded as a part of the divide and then cast to a larger scale, which resulted in the last digits being all zeros.  There is also theoretically the possibility where the opposite is true and the scale is reduced, but the rounding from the first divide changed a significant enough digit that the rounding from the cast resulted in a different final value.
This was all fixed in 3.4.0 so we need to undo the "fix" that I put in as a part of https://github.com/NVIDIA/spark-rapids/pull/6414.  It should be shimmed so on older versions of Spark we still do the same broken thing.

This was fixed in #7362 as part of the effort to fix DB 11.3 test failures. I verified this and it seems to be matching the results from Spark3.4


⚠ Bofrost.es has degraded performance

In b15e616, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1445 ms

Resolved: Bofrost.es performance has improved in 740b81f after 13 minutes.


⚠ ClamAV has degraded performance

In 7a3dc9d, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 67 ms

Resolved: ClamAV performance has improved in c9722f2.


Not working with autotest and ruby 1.9.2

Autotest runs fine but no pretty colors :(

Same here.
Uninitialized constant Color. :/


Maxime adjustments

I made some very minor updates on the document. I corrected typos, and I switched the order of the Images and Further reading sections in the final slide. I also changed the arrows pointing to the predictions to points. It looks cleaner like this and the prediction has a tab so it looks embedded in the hypothesis.

No worries, I just accepted the changes!


[Avhq3lmd] 1079 datalake cli library

Trello Ticket: https://trello.com/c/AvHq3LMd

What does this Pull Request do?
This PR introduces initial source code for c360-python-client, which includes functions to call data lake endpoints.
How should this be validated?
You can do pytest to run unit tests.
Unfortunately, the colab_utils.py doesn't have any test in this PR; it doesn't make as much sense since its either a simple API call to Colab, or a simple API call to Drive (unit test will end up having a lot of mock that doesn't have that much utility anyway).
You can also run through this notebook (it uses this library):  https://colab.research.google.com/drive/1Y-i8-PBeegVUk8ekHu0D5Q6BFe8NYpo9?usp=sharing

If you need an API key for this, you can generate one at https://api-staging.acme.c360.ai/ (it is advised to save this key somewhere, since API doesn't support getting existing API key)

Checklist

[x] You've fetched and rebased your branch on an up-to-date version master
[ ] PR contains new tests relevant for the feature/problem this PR is addressing
[ ] All tests and linting pass
[x] Your commits have been squashed/rebased/etc. for reviewer clarity

Additional Notes:

Interested parties
@minhducvt293 as main reviewer

apart from above CRs/questions, I encountered this when running pytest:
_ ERROR collecting src/c360_client/dataset_cls/test/test_dataset_cls.py _
ImportError while importing test module '/Users/minhducvt293/c360/c360-python-client/src/c360_client/dataset_cls/test/test_dataset_cls.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
../../.pyenv/versions/3.7.3/lib/python3.7/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
src/c360_client/dataset_cls/test/test_dataset_cls.py:3: in <module>
    from c360_client.dataset_cls import DatalakeClientDataset
E   ModuleNotFoundError: No module named 'c360_client'

Could it be that you haven't installed the library? A new section in README.md is added to describe how to install the library in development mode.

unfortunately this will not let us has dynamic tenant (https://github.com/tra-sg/c360-python-client/pull/1#discussion_r549234546)

This is currently lifted from colab_utils.py, and I don't see a good way to implement this just from the client library. How about we move this to a future card?

force-pushed on squash


[Preview 6] Add documentation for @attribute, @code and @namespace directives

@code(Blazor) - https://github.com/aspnet/AspNetCore/issues/6361
@namespace(Blazor) - https://github.com/aspnet/AspNetCore/issues/8007
@attribute - https://github.com/aspnet/AspNetCore/issues/10393

Note: There is currently a known issue with @attribute directive not working in _Imports.razor and _ViewImports.cshtml.


FEBS should be able to compile sass

FEBS should be able to compile sass files. Even though we attempt to use standard css via postcss where we can, for more advanced use cases we use sass (REI Cedar) and febs should be able to compile it.

febs does compile sass, see https://github.com/rei/febs/blob/master/test/index-dev-spec.js#L195.

Closing. Thanks!


Right to Left languages issue

In Right to Left languages text field start for the left side but not from the flag:

It's now available on 0.7.5.


Tabs with Grid is collapsing every time tab selected

@vitmalina hey friend,
We use your grid alot and we are very stesfied.
I use bootstrap tab or even just plain show/hide functionality, every time tab selected the grid is start from
the left-top corner and collapse to fill the container , the whole thing  take about 2 sec.

this is what happend
the html
<div wgrid="columns.bind:columns;
                     records.bind:records;
                     callback.bind:rowClicked;
                     scope.bind:$this;
                     name.bind:gridName;"
                     style="width: 100%;">
</div>

the js
 setGridColumns() {

        this.columns = [
             { field: 'recid', caption: '', hidden: true },
             { field: 'TourPosition', caption: 'Tour Position' ,size: '20%',sortable: true},
             { field: 'PlayerUserName', caption: 'Player user name', size: '20%', sortable: true},
             { field: 'Prize', caption: 'Prize($)', size: '20%', sortable: true,render: 'float:2'},
             { field: 'Team', caption: 'TeamName', size: '20%', sortable: true},
             { field: 'TeamPrize', caption: 'Team prize', size: '20%', sortable: true,render: 'float:2'},
             { field: 'RMStatus', caption: 'RM Status', size: '20%', sortable: true},
             { field: 'AccountStatus', caption: 'Account Status', size: '20%', sortable: true},
             { field: 'RegistrationCountry', caption: 'Registration country', size: '120px', sortable: true}
        ];
    }

  if (w2ui[this.name]) {
                // w2ui[this.name].clear();
                w2ui[this.name].records = newVal;
                w2ui[this.name].refresh();
            } else {
                this.grid = $(this.element).w2grid({
                    name: this.name || ('grid' + Math.random() * 100),
                    show: {
                        toolbar: this.toolbar || false,
                        footer: this.footer || false,
                        markSearch: this.markSearch || false
                    },
                    multiSelect: false,
                    multiSearch: true,
                    columns: this.columns,
                    records: this.records,
                    reorderColumns: true,
                    sortData: this.sortData
                });
                w2ui[this.name].refresh();
            }

can u please help

any help friends?

w2ui.grid.refresh(); when you click on the tab i do that and works fine.

Don't need refresh, just a resize. This happens because it was invisible when you set the grid height

@carlosgblos - sounds like a most likely what it happens. You should not render grid into div that is not visible. The grid takes dimensions from the div it is rendered in. The best would be to render grid after yo show the div.
Please close this issue if this is the case.

Hey guys i created a  fiddle  that describe my problem.
what you need to do is :

click on the button to hide the grid.
resize the grid container (manually,just drug the borders a bit).
click the button a gain to display the grid.

play with that a bit you should see that the grid stack and shrink.
Any idea to solve that please?

Here is the fix for it http://jsfiddle.net/x145gn99/1/


deprecate commons/hdd

We havent't had anything meaningful configuration in this module for a while. So let's deprecate it.
Description of changes
Things done

[ ] Tested the changes in your own NixOS Configuration
[ ] Tested the changes end-to-end by using your fork of nixos-hardware and
importing it via <nixos-hardware> or Flake input

Than we don't have https://github.com/NixOS/nixos-hardware/issues/992


Configcheck pod does not inherit pod settings from logging-operator pod

Bugs should be filed for issues encountered whilst operating logging-operator.
You should first attempt to resolve your issues through the community support
channels, e.g. Slack, in order to rule out individual configuration errors. #logging-operator
Please provide as much detail as possible.

Describe the bug:
The newCheckPod function does not create a pod that inherits the tolerations and nodeSelector settings from the operator pod. The resulting configcheck pod fails if the logging-operator is running on a cluster of tainted nodes.
Expected behaviour:
I expected that the newCheckPod function would create a configcheck pod with the same tolerations and nodeSelector settings as the operator pod.
Steps to reproduce the bug:

Taint all nodes with a generic taint
Add a toleration for that taint to the logging-operator spec
Run the logging-operator using the quickstart guide

Additional context:
I have a "brute force" solution that I am testing out in a dev branch to illustrate the sort of behavior that I am looking for. However, I believe that using the downward API would be a much better pattern.
For full transparency: we taint our Linux nodes on our RKE clusters at Rancher. We do not taint our Windows nodes (intentional, as far as I am aware), so the configcheck pod tries to run on Windows if there's a Windows node available. That's the motivation behind this issue filing. However, the same principle applies on our "all Linux node" clusters too since all of those nodes are tainted.
Environment details:

Kubernetes version (e.g. v1.15.2): v1.18.9
Cloud-provider/provisioner (e.g. AKS, GKE, EKS, PKE etc): RKE on AWS EC2
logging-operator version (e.g. 2.1.1): 3.6.0
Install method (e.g. helm or static manifests): both
Logs from the misbehaving component (and any other relevant logs): Apologies; lost my logs tarball. Essentially since all nodes are tainted, the configcheck pod fails since there is not an untainted node.
Resource definition (possibly in YAML format) that caused the issue, without sensitive data: Added our custom toleration for our tainted nodes to the logging-operator YAML, as well as a nodeSelector for Linux nodes.

/kind bug

Yay! Thank you.


Fix the configuration of the PHP 5.3 job on precise

Env variables defined as matrix are not merged with the job env variables of the matrix. We need to use global env variables (which we can still override in a specific job if needed).
This fixes this error: https://travis-ci.org/minkphp/MinkSelenium2Driver/jobs/436675862#L167

To win time on CI, I cancelled all the other jobs failing due to trying to use Firefox through the JsonWire protocol. they would fail anyway.

Looks like the precise job has an issue running the test server, but this would have to be debugged separately.


Update raphael-koellner.yml

Learn Build status updates of commit e706c64:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

rd/raphael-koellner.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 1f02272:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

rd/raphael-koellner.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 6e56d96:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

rd/raphael-koellner.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 90fe941:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

rd/raphael-koellner.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


[Bug] Inconsistent state for elasticstack_kibana_synthetics_private_location space_id

Describe the bug
I was testing out the new resource elasticstack_kibana_synthetics_private_location
Seems like the elasticstack_fleet_agent_policy.namespace has to match elasticstack_kibana_synthetics_private_location.space_id
if not you will get an error like this
│ When applying changes to module.agent_policies.elasticstack_kibana_synthetics_private_location.main["dev"], provider
│ "provider[\"registry.terraform.io/elastic/elasticstack\"]" produced an unexpected new value: .space_id: was null, but now
│ cty.StringVal("dev").
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.
╵
╷

Trying to understand these 2 values should be matching, it throws the same error if you set unset space_id as null because agent_policy namespace would have been "default"
To Reproduce
Steps to reproduce the behavior:
Creating a sample code
resource "elasticstack_fleet_agent_policy" "main" {
  for_each        = toset(var.environments)
  name            = each.value
  namespace       = each.value
  description     = each.value

  sys_monitoring  = true
  monitor_logs    = true
  monitor_metrics = true
}

resource "elasticstack_kibana_synthetics_private_location" "main" {
  for_each        = toset(var.environments)
  label           = each.value
  agent_policy_id = elasticstack_fleet_agent_policy.main[each.value].id
  space_id = "default"
  tags            = [each.value]
  geo = {
    lat = 0
    lon = 0
  }
}

Expected behavior
My understanding is space_id is a different thing as namespace, so i dont think it should be matching
Versions (please complete the following information):

OS: mac
Terraform Version v1.6.4
Provider version v0.11.6
Elasticsearch Version 8.12.2

Additional context
Add any other context about the problem here.

@biscout42 do you have a chance to take a look at this?

Let me have a look. Indeed, space_id is a namespace, or space in kibana terminology, but there might be additional restriction by kibana between policy and location (one example - private location has same id as policy).
@doom160 , does it work for you if you set space_id = each.value for private location?

I have done a test to verify, if I can create private location in other space, than policy and it doesn't work.
https://github.com/biscout42/terraform-provider-elasticstack/commit/ae4cb58a321936c6c5244c691d646cb9cd80e3a3#diff-b0cd8bfc327e1fcc261059402ae2aff82070b9a7ad832fff809cf62fb55a2ce6R365
Let me get in touch with synthetics folks about the details. We might have restrictions to use only policy namespace.

yes it would have work if i set space_id = each.value
i thought the namespace on agent policy refers to the default namespace for index to this convention <type>-<dataset>-<namespace> ?
https://www.elastic.co/guide/en/fleet/current/data-streams.html#data-streams-naming-scheme
and space_id im thinking is it the elastic space? i.e.
https://www.elastic.co/guide/en/kibana/current/xpack-spaces.html

Hi @doom160 , thanks for prompt reply. I could see confusion between space_id , space and namespace. I'm sorry, I can't explain all historical reason why it is so. For private locations I used space_id , because it is the way its documented in API, but in fact it is "space" in terms of elastic stack / kibana.
Indeed, in fleet API it is named namespace: https://www.elastic.co/guide/en/fleet/current/fleet-api-docs.html#create-agent-policy-api
Now interesting part about agent policy and private locations. I have got feedback, that private location is bind to the space of the agent policy. So correct way to configure it for your example would be:
  space_id = elasticstack_fleet_agent_policy.main[each.value].namespace

@tobio , lets sync shortly, might be we could improve documentation or even drop space_id parameter for private location to reduce confusion.


Question about Presto non-interactive mode job submission/remote job submission

Hi Presto experts,
Is there a way to submit Presto query remotely via HTTP instead of using interactive mode. What format should I follow or commands I should use? Thanks a lot!
Best,
David

How about using JDBC driver?

Hi @KBP-TDC , thanks for the reply! I've succeeded in both JDBC and ODBC, but I was wondering whether there is a way to submit a script as a file or via http request? Does presto provide these features or I need to build my own?

JDBC driver uses Presto's REST interface and does an HTTP POST with the sql query and then a bunch of GETs to get each page of the result set. You can start with this.

@nezihyigitbasi Thanks a lot for the advice!

There are drivers / client libraries for many languages: https://prestodb.io/resources.html
I recommend using one of them and if it doesn't fit your needs, please send feedback or a patch to the author of the library.

@electrum Thanks a lot David

@liusztc09 if you consider the issue resolved can you please go ahead and close it? Thanks!


clear_screen to fit in Warp's manner

Warp always has an upper block for the last command:

Currently, Reedline's clear_screen will print empty lines to move the current insert point to the most upper position, which is hidden by the block quoted.
I don't know how mysql can "clear screen" (ctrl+l) properly as shown above, but this can be a compatibility request.

rustyline's implementation uses self.write_and_flush("\x1b[H\x1b[J") and it seems work.

you can try that out with keybindings to see if that makes a difference with $"(ansi cursor_home)(ansi clear_screen)"

@fdncred I saw the custom keybindings right now but I'm wondering what to put here ...
    let mut keybindings = reedline::default_emacs_keybindings();
    keybindings.add_binding(
        reedline::KeyModifiers::CONTROL,
        reedline::KeyCode::Char('l'),
        todo!("not yet find the effect alternative clear_screen impl"),
    );

    let mut state = Reedline::create()
        .with_validator(Box::new(..))
        .with_highlighter(Box::new(..))
        .with_edit_mode(Box::new(Emacs::new(keybindings)));

Perhaps EditCommand, but I don't interact with the buffer, I'd talk to the painter.

I was giving you nushell commands to try, sorry.
It looks like the reedline clear_screen function isn't quite working like rustyline's.
    pub(crate) fn clear_screen(&mut self) -> Result<()> {
        self.stdout.queue(cursor::Hide)?;
        let (_, num_lines) = terminal::size()?;
        for _ in 0..2 * num_lines {
            self.stdout.queue(Print("\n"))?;
        }
        self.stdout.queue(MoveTo(0, 0))?; # This is go to home
        self.stdout.queue(cursor::Show)?;

        self.stdout.flush()?;
        self.initialize_prompt_position()
    }

Seems like it might should be closer to the clear_scrollback function but without the purge.
    pub(crate) fn clear_scrollback(&mut self) -> Result<()> {
        self.stdout
            .queue(crossterm::terminal::Clear(ClearType::All))?
            .queue(crossterm::terminal::Clear(ClearType::Purge))?
            .queue(cursor::MoveTo(0, 0))?
            .flush()?;
        self.initialize_prompt_position()
    }

To mimic rustline you'd have to use MoveTo(0, 0) and then ClearType::FromCursorDown.

to fix the clear_screen function or add another one as suggested above

This should happen within reedline (so a PR). Does it what you mean ;D?

If you want it to work like rustyline, ClearType::All is the wrong enum. It should be ClearType::FromCursorDown.

History time: that we print those newlines is down to my second PR ever to reedline in #30, basically the goal was to replicate the Ctrl-L behavior from bash in a somewhat faithful manner (#28).
^L is equivalent to form-feed in ASCII so should not delete any existing content but only move that off the screen and redraw the prompt at the top of the visible area.
Not sure if \e[2J or \e[J is the right one I have seen mentions of both.
Our ClearScreen should in my view do the same as the bash clear-screen/Ctrl-L and not be the same as clear-display

@sholderbach Thanks for the background!
I typically have a few options to start a PR for discussions:

Replace clear_screen entirely, which may cause compatibility issues with all historical considerations.
Switch the manner with a feature flag, but it looks like random changes.
Add a new ReedlineEvent perhaps called ClearDisplay and allow users to rebind the keybindings as I try above (we just cannot directly talk to the painter).
Try to determine the terminal type and use a proper implementation.

I'll send a PR first adopt 3 and see if we can reach 4.