<think>
Okay, I need to implement the two functions, digit_word and digit_words. Let's start with digit_word. The function takes an integer as input and returns the corresponding English word for the digit. So for example, if the input is 0, it should return 'zero', and for 9, it should return 'nine'. 

First, I need to map each digit from 0 to 9 to their word representations. I can create a dictionary where the keys are the integers 0-9 and the values are the corresponding words. Let me think about the correct words. Zero, one, two, three, four, five, six, seven, eight, nine. So the dictionary would be something like {0: 'zero', 1: 'one', ..., 9: 'nine'}.

Wait, but what if the input is not a single digit? But according to the function signature, digit is an integer, so the function is supposed to handle a single digit. So the function is safe to assume that the input is a valid digit between 0 and 9. But the problem says that the function is for a single digit. So the function is straightforward.

So the code for digit_word would be to create a dictionary mapping each digit to its word, then return the corresponding value. But how to handle invalid inputs? The problem says to raise ValueError for invalid arguments. So if the input is not between 0 and 9, we should raise a ValueError. So in the function, first check if the digit is in 0-9. If not, raise ValueError with a message like "Invalid digit".

Now for the digit_words function. The function takes a string of digits and returns a string where each run of digits is converted to their corresponding words, separated by spaces. If a run has no digits, it's empty. Wait, the description says that digit_words names every digit of a run of digits in order, joined by single spaces, and gives empty text for a run holding none. Wait, maybe the function is supposed to process the input string, split it into runs of consecutive digits, and for each run, convert each digit to its word, then join them with spaces. But if a run is empty (like if there are non-digit characters), then it's empty. Wait, but the input is a string of digits. Wait, the problem says that the function is for a run of digits. So perhaps the input is a string that may contain non-digit characters, and the function needs to process runs of digits. For example, if the input is "a12b34c", then the runs are "12" and "34". Each run is converted to "one two" and "three four", then joined with spaces. But the problem says that the function is supposed to process a run of digits. So the function needs to split the input string into runs of consecutive digits, then for each run, convert each digit to its word, then join them with spaces, and then all those runs are joined with spaces. Wait, but the problem says that the function is called digit_words, which takes a string of digits. Wait, the problem says that the function is for a run of digits. So maybe the input is a string that may contain non-digit characters, and the function is supposed to process each consecutive sequence of digits. For example, if the input is "123abc45", then the runs are "123" and "45". Each run is converted to "one two three" and "four five", then joined with spaces. So the output would be "one two three four five".

But the problem says that the function is called digit_words, and the