Full Code of AmaniAbbas/py4e for AI

master 660ea72e99db cached
51 files
7.2 MB
1.9M tokens
2 symbols
1 requests
Download .txt
Showing preview only (7,512K chars total). Download the full file or copy to clipboard to get everything.
Repository: AmaniAbbas/py4e
Branch: master
Commit: 660ea72e99db
Files: 51
Total size: 7.2 MB

Directory structure:
gitextract_si9uiwy2/

├── Course-1/
│   ├── Assignemnts/
│   │   ├── Assignment_chapter2.py
│   │   ├── Assignment_chapter3.py
│   │   ├── Assignment_chapter4.py
│   │   ├── Assignment_chapter5.py
│   │   └── FirstAssignment.py
│   └── Quizzes/
│       ├── quiz_chapter2.md
│       ├── quiz_chapter3.md
│       ├── quiz_chapter4.md
│       └── quiz_chapter5.md
├── Course-2/
│   ├── Assignments/
│   │   ├── Assignment_chapter10.py
│   │   ├── Assignment_chapter6.py
│   │   ├── Assignment_chapter7.py
│   │   ├── Assignment_chapter8.py
│   │   └── Assignment_chapter9.py
│   └── Quizzes/
│       ├── quiz_chapter10.md
│       ├── quiz_chapter6.md
│       ├── quiz_chapter7.md
│       ├── quiz_chapter8.md
│       └── quiz_chapter9.md
├── Course-3/
│   ├── Assignments/
│   │   ├── Assignment_chapter11.py
│   │   ├── Assignment_chapter12.py
│   │   ├── Assignment_chapter13-1.py
│   │   ├── Assignment_chapter13-2.py
│   │   ├── Assignment_chapter14.py
│   │   ├── Assignment_chapter15-1.py
│   │   ├── Assignment_chapter15-2.py
│   │   └── regex_sum_135850.txt
│   └── Quizzes/
│       ├── quiz_chapter11.md
│       ├── quiz_chapter12.md
│       ├── quiz_chapter13.md
│       ├── quiz_chapter14.md
│       └── quiz_chapter15.md
├── Course-4/
│   ├── Week-2/
│   │   ├── Quizzes/
│   │   │   ├── quiz_chapter16.md
│   │   │   ├── week1- quizz1.md
│   │   │   └── week2- quizz1.md
│   │   └── assignments/
│   │       ├── assignment.py
│   │       └── mbox.txt
│   ├── Week-3/
│   │   ├── Assignment/
│   │   │   └── tracks/
│   │   │       ├── Library.xml
│   │   │       ├── README.txt
│   │   │       └── tracks.py
│   │   └── Quizzes/
│   │       └── Week-3.md
│   ├── Week-4/
│   │   ├── Assignment/
│   │   │   ├── roster.py
│   │   │   └── roster_data.json
│   │   └── Quzzes/
│   │       └── Week-4.md
│   └── Week-5/
│       └── geodata/
│           ├── README.txt
│           ├── geodump.py
│           ├── geoload.py
│           ├── where.data
│           ├── where.html
│           └── where.js
└── Readme.md

================================================
FILE CONTENTS
================================================

================================================
FILE: Course-1/Assignemnts/Assignment_chapter2.py
================================================
'''
2.2 Write a program that uses input to prompt a user for their name and then
welcomes them. Note that input will pop up a dialog box. Enter Sarah in the
pop-up box when you are prompted so your output will match the desired output.
'''

name = input("Enter your name")
print("Hello", name)


'''
2.3 Write a program to prompt the user for hours and rate per hour using input
to compute gross pay. Use 35 hours and a rate of 2.75 per hour to test the
program (the pay should be 96.25). You should use input to read a string and
float() to convert the string to a number. Do not worry about error checking
or bad user data.
'''
# This first line is provided for you

hrs = input("Enter Hours:")
rate = input("Enter Rate:")
gross_pay = float(hrs) * float(rate)
print("Pay:",gross_pay)


================================================
FILE: Course-1/Assignemnts/Assignment_chapter3.py
================================================
'''
3.1 Write a program to prompt the user for hours and rate per hour using input
to compute gross pay. Pay the hourly rate for the hours up to 40 and 1.5 times
the hourly rate for all hours worked above 40 hours. Use 45 hours and a rate of
10.50 per hour to test the program (the pay should be 498.75). You should use
input to read a string and float() to convert the string to a number.
Do not worry about error checking the user input - assume the user types
numbers properly.
'''
hrs = input("Enter Hours:")
rate = input("Enter rate:")
h = float(hrs)
rate = float(rate)
if h <= 40:
    pay = h * rate
else:
    pay = (rate*40) + ((h-40)* (rate*1.5))

print(pay)



'''
3.3 Write a program to prompt for a score between 0.0 and 1.0.
If the score is out of range, print an error. If the score is between 0.0 and
1.0, print a grade using the following table:
Score Grade
>= 0.9 A
>= 0.8 B
>= 0.7 C
>= 0.6 D
< 0.6 F
If the user enters a value out of range, print a suitable error message and
exit. For the test, enter a score of 0.85.
'''
score = input("Enter a score:")
score = float(score)
if score <= 1.0:
    if score >= 0.9:
        Grade = "A"
    elif score >= 0.8:
        Grade = "B"
    elif score >= 0.7:
        Grade = "C"
    elif score >= 0.6:
        Grade = "D"
    else:
        Grade = "F"
else:
    Grade = "Error! out of range!"

print(Grade)


================================================
FILE: Course-1/Assignemnts/Assignment_chapter4.py
================================================
'''
4.6 Write a program to prompt the user for hours and rate per hour using input
to compute gross pay. Pay should be the normal rate for hours up to 40 and
time-and-a-half for the hourly rate for all hours worked above 40 hours.
Put the logic to do the computation of time-and-a-half in a function called
computepay() and use the function to do the computation. The function should
return a value. Use 45 hours and a rate of 10.50 per hour to test the program
(the pay should be 498.75). You should use input to read a string and float()
to convert the string to a number. Do not worry about error checking the user
input unless you want to - you can assume the user types numbers properly.
Do not name your variable sum or use the sum() function.
'''
def computepay(h,r):
    if h <= 40:
        pay = h * r
    if h > 40:
        pay = (40 * r) + ((h-40) * (r*1.5))
    return pay

hrs = input("Enter Hours:")
rate = input("Enter Rate:")
h = float(hrs)
r = float(rate)
print(computepay(h,r))


================================================
FILE: Course-1/Assignemnts/Assignment_chapter5.py
================================================
'''
5.2 Write a program that repeatedly prompts a user for integer numbers until
the user enters 'done'. Once 'done' is entered, print out the largest and
smallest of the numbers. If the user enters anything other than a valid number
catch it with a try/except and put out an appropriate message and ignore the
number. Enter 7, 2, bob, 10, and 4 and match the output below.
'''
largest = None
smallest = None
while True:
    num = input('Enter a number: ')
    if num == 'done' :
        break
    try:
        number = float(num)
    except:
        print('Invalid input')
        continue
    if largest is None:
        largest = number
    elif largest < number:
        largest = number
    if smallest is None:
        smallest = number
    elif smallest > number:
        smallest = number


print("Maximum is", int(largest))
print("Minimum is", int(smallest))


================================================
FILE: Course-1/Assignemnts/FirstAssignment.py
================================================
print ('I\'m a happy learner')


================================================
FILE: Course-1/Quizzes/quiz_chapter2.md
================================================
** 1- In the following code, **
```Python
 print (98.6)
```
** What is "98.6"? **

    1) A conditional statement
    2) A variable
    3) A constant
    4) An iteration / loop statement

_Answer is 3) A constant_

** 2- What does the following code print out? **
```Python
 print ("123"+"abc")
```

    1) 123abc
    2) hello world
    3) This is a syntax error because you cannot add strings
    4) 123+abc

_Answer is 1) 123abc_

** 3- Which of the following is a bad Python variable name? **

    1) Spam
    2) spam23
    3) spam_23
    4) spam.23

_Answer is 4) spam.23_

** 4- Which of the following is not a Python reserved word? **

    1) iterate
    2) continue
    3) else
    4) break

_Answer is 1) iterate_

** 5- Assume the variable x has been initialized to an integer value (e.g., x = 3). **
** What does the following statement do? **
```Python
 x = x + 2
```
    1) Retrieve the current value for x, add two to it and put the sum back into x
    2) This would fail as it is a syntax error
    3) Exit the program
    4) Create a function called "x" and put the value 2 in the function

_Answer is 1) Retrieve the current value for x, add two to it and put the sum back into x_

** 6- Which of the following elements of a mathematical expression in Python is evaluated first? **

    1) Addition +
    2) Subtraction -
    3) Multiplication *
    4) Parentheses ( )

_Answer is 4) Parentheses ( )_

** 7- What is the value of the following expression **
```Python
 42 % 10
```
*Hint - the "%" is the remainder operator*

    1) 4210
    2) 10
    3) 0.42
    4) 2

_Answer is 4) 2_

** 8- What will be the value of x after the following statement executes: **
```Python
 x = 1 + 2 * 3 - 8 / 4
```
    1) 2
    2) 1.0
    3) 3
    4) 5.0

_Answer is 4) 5.0_

** 9- What will be the value of x when the following statement is executed:**
```Python
x = int(98.6)
```
    1) 99
    2) 6
    3) 100
    4) 98

_Answer is 4) 98_

** 10- What does the Python input() function do? **

    1) Pause the program and read data from the user
    2) Connect to the network and retrieve a web page.
    3) Read the memory of the running program
    4)Take a screen shot from an area of the screen

_Answer is 1) Pause the program and read data from the user_


================================================
FILE: Course-1/Quizzes/quiz_chapter3.md
================================================
** 1- What do we do to a Python statement that is immediately after an if
statement to indicate that the statement is to be executed only when the if
statement is true? **

    1) Start the statement with a "#" character
    2) Begin the statement with a curly brace {
    3) Underline all of the conditional code
    4) Indent the line below the if statement

_Answer is 4) Indent the line below the if statement _

** 2- Which of these operators is not a comparison / logical operator?**

     1) !=
     2) >
     3) =
     4) ==

_Answer is 3) =_

** 3- What is true about the following code segment: **
```Python
if  x == 5 :
    print('Is 5')
    print('Is Still 5')
    print('Third 5')
```

    1) Depending on the value of x, either all three of the print statements will execute or none of the statements will execute.
    2) The string 'Is 5' will always print out regardless of the value for x.
    3) The string 'Is 5' will never print out regardless of the value for x.
    4) Only two of the three print statements will print out if the value of x is less than zero.

_Answer is 1) Depending on the value of x, either all three of the print statements will execute or none of the statements will execute._

** 4- When you have multiple lines in an if block, how do you indicate the end of the if block? **

    1) You use a curly brace { after the last line of the if block
    2) You omit the semicolon ; on the last line of the if block
    3) You de-indent the next line past the if block to the same level of indent as the original if statement
    4) You put the colon : character on a line by itself to indicate we are done with the if block

_Answer is 3) You de-indent the next line past the if block to the same level of indent as the original if statement_


** 5- You look at the following text: **
```Python
if x == 6 :
    print('Is 6')
    print('Is Still 6')
    print('Third 6')
```
_It looks perfect but Python is giving you an 'Indentation Error' on the second print statement. What is the most likely reason?_

    1) In order to make humans feel inadequate, Python randomly emits 'Indentation Errors' on perfectly good code - after about an hour the error will just go away without any changes to your program
    2) You have mixed tabs and spaces in the file
    3) Python thinks 'Still' is a mis-spelled word in the string
    4) Python has reached its limit on the largest Python program that can be run

_Answer is 2) You have mixed tabs and spaces in the file_


** 6- What is the Python reserved word that we use in two-way if tests to indicate the block of code that is to be executed if the logical test is false? **

    1) else
    2) except
    3) iterate
    4) break

_Answer is 1) else_


** 7- What will the following code print out? **
```Python
x = 0
if x < 2 :
    print('Small')
elif x < 10 :
    print('Medium')
else :
    print('LARGE')
print('All done')
```

    1) LARGE
       All done
    2) All done
    3) Small
       Medium
       LARGE
       All done
    4) Small
       All done

_Answer is 4) Small All done_


** 8- For the following code, **
```Python
if x < 2 :
    print('Below 2')
elif x >= 2 :
     print('Two or more')
else :
    print('Something else')
```
_What value of 'x' will cause 'Something else' to print out?_

    1) This code will never print 'Something else' regardless of the value for 'x'
    2) x = -22
    3) x = 2.0
    4) x = -2.0

_Answer is 1) This code will never print 'Something else' regardless of the value for 'x'_

** 9- In the following code (numbers added) - which will be the last line to execute successfully? **
```Python
(1)   astr = 'Hello Bob'
(2)   istr = int(astr)
(3)   print('First', istr)
(4)   astr = '123'
(5)   istr = int(astr)
(6)   print('Second', istr)
```
    1) 1
    2) 2
    3) 6
    4) 5

_Answer is 1) 1_


** 10- For the following code: **
```Python
astr = 'Hello Bob'
istr = 0
try:
    istr = int(astr)
except:
    istr = -1
```
_What will the value be for istr after this code executes?_

    1) 0
    2) -1
    3) The istr variable will not have a value
    4) It will be the 'Not a number' value (i.e. NaN)

_Answer is 2) -1_


================================================
FILE: Course-1/Quizzes/quiz_chapter4.md
================================================
** 1- Which Python keyword indicates the start of a function definition?**

     1) return
     2) continue
     3) rad
     4) def

_Answer is 4) def_

** 2-In Python, how do you indicate the end of the block of code that makes up the function? **

    1) You add a line that has at least 10 dashes
    2) You de-indent a line of code to the same indent level as the def keyword
    3) You put the "END" keyword in column 7 of the line which is to be the last line of the function
    4) You put the colon character (:) in the first column of a line

_Answer is 2)You de-indent a line of code to the same indent level as the def keyword_

** 3- In Python what is the input() feature best described as? **

    1) A reserved word
    2) A built-in function
    3) A data structure that can hold multiple values using strings as keys
    4) A user-defined function

_Answer is 2) A built-in function_

** 4- What does the following code print out?**
```Python
def thing():
    print('Hello')

print('There')
```

    1) Hello
       There
    2) Hello
    3) There
    4) thing
       Hello
       There

_Answer is 3) There_

** 5- In the following Python code, which of the following is an "argument" to a function?**

```Python
x = 'banana'
y = max(x)
z = y * 2
```
    1) x
    2) max
    3) 'banana'
    4) y

_Answer is 1) x_

** 6- What will the following Python code print out?**
```Python
def func(x) :
    print(x)

func(10)
func(20)
```
    1) 10
       20
    2) x
       10
       x
       20
    3) func
       func
    4) x
       20

_Answer is 1) 10 20_

** 7- Which line of the following Python program will never execute?**
```Python
def stuff():
    print('Hello')
    return
    print('World')

stuff()
```
    1) print ('World')
    2) print('Hello')
    3) stuff()
    4) def stuff():
    5) return

_Answer is 1) print ('World')_

** 8- What will the following Python program print out?**
```Python
def greet(lang):
    if lang == 'es':
        return 'Hola'
    elif lang == 'fr':
        return 'Bonjour'
    else:
        return 'Hello'

print(greet('fr'),'Michael')
```
    1) Bonjour Michael
    2) def
       Hola
       Bonjour
       Hello
       Michael
    3) Hola Michael
    4) Hola
       Bonjour
       Hello
       Michael

_Answer is 1) Bonjour Michael_

** 9- What does the following Python code print out? (Note that this is a bit of a trick question and the code has what many would consider to be a flaw/bug - so read carefully). **
```Python
def addtwo(a, b):
    added = a + b
    return a

x = addtwo(2, 7)
print(x)
```
    1) 2
    2) 7
    3) 9
    4) 14

_Answer is 1) 2_

** 10- What is the most important benefit of writing your own functions? **

    1) Avoiding writing the same non-trivial code more than once in your program
    2) Following the rule that whenever a program is more than 10 lines you must use a function
    3) Following the rule that no function can have more than 10 statements in it
    4) To avoid having more than 10 lines of sequential code without an indent or de-indent

_Answer is 1) Avoiding writing the same non-trivial code more than once in your program_


================================================
FILE: Course-1/Quizzes/quiz_chapter5.md
================================================
** 1- What is wrong with this Python loop:**
```Python
n = 5
while n > 0 :
    print(n)
print('All done')
```
    1) This loop will run forever
    2) The print('All done') statement should be indented four spaces
    3) There should be no colon on the while statement
    4) while is not a Python reserved word

_Answer is 1) This loop will run forever_

** 2- What does the break statement do?**

    1) Jumps to the "top" of the loop and starts the next iteration
    2) Exits the currently executing loop
    3) Exits the program
    4) Resets the iteration variable to its initial value

_Answer is 2) Exits the currently executing loop_

** 3- What does the continue statement do? **

    1) Resets the iteration variable to its initial value
    2) Jumps to the "top" of the loop and starts the next iteration
    3) Exits the currently executing loop
    4) Exits the program

_Answer is 2) Jumps to the "top" of the loop and starts the next iteration_

** 4- What does the following Python program print out?**
```Python
tot = 0
for i in [5, 4, 3, 2, 1] :
    tot = tot + 1
print(tot)
```
    1) 10
    2) 0
    3) 15
    4) 5

_Answer is 4) 5_

** 5- What is the iteration variable in the following Python code:**
```Python
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends :
     print('Happy New Year:',  friend)
print('Done!')
```
    1) friend
    2) Glenn
    3) Sally
    4) friends

_Answer is 1) friend_

** 6- What is a good description of the following bit of Python code?**
```Python
zork = 0
for thing in [9, 41, 12, 3, 74, 15] :
    zork = zork + thing
print('After', zork)
```
    1) Find the smallest item in a list
    2) Count all of the elements in a list
    3) Find the largest item in a list
    4) Sum all the elements of a list

_Answer is 4) Sum all the elements of a list_

** 7- What will the following code print out?**
```Python
smallest_so_far = -1
for the_num in [9, 41, 12, 3, 74, 15] :
   if the_num < smallest_so_far :
      smallest_so_far = the_num
print(smallest_so_far)
```
_Hint: This is a trick question and most would say this code has a bug - so read carefully_

    1) -1
    2) 74
    3) 42
    4) 3

_Answer is 1) -1_

** 8- What is a good statement to describe the is operator as used in the following if statement:**
```Python
if smallest is None :
     smallest = value
```
    1) matches both type and value
    2) Looks up 'None' in the smallest variable if it is a string
    3) The if statement is a syntax error
    4) Is true if the smallest variable has a value of -1

_Answer is 1) matches both type and value_

** 9- Which reserved word indicates the start of an "indefinite" loop in Python?**

     1) def
     2) while
     3) indef
     4) break
     5) for

_Answer is 2) while_

** 10- How many times will the body of the following loop be executed?**
```Python
n = 0
while n > 0 :
    print('Lather')
    print('Rinse')
print('Dry off!')
```
    1) 0
    2) This is an infinite loop
    3) 5
    4) 1

_Answer is 1) 0_


================================================
FILE: Course-2/Assignments/Assignment_chapter10.py
================================================
'''
10.2 Write a program to read through the mbox-short.txt and figure out the
distribution by hour of the day for each of the messages. You can pull the hour
out from the 'From ' line by finding the time and then splitting the string a
second time using a colon.
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
Once you have accumulated the counts for each hour, print out the counts,
sorted by hour as shown below.
'''

name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
hours = list()
counts = dict()
for line in handle:
    line = line.split()
    if len(line) < 3 or line[0] != 'From':
        continue
    time= line[5].split(':')
    hours.append(time[0])

for hour in hours:
    counts[hour] = counts.get(hour, 0) + 1

lst = sorted([(k,v) for k,v in counts.items()])

for k,v in lst:
    print(k,v)


================================================
FILE: Course-2/Assignments/Assignment_chapter6.py
================================================
'''
6.5 Write code using find() and string slicing (see section 6.10) to extract the
number at the end of the line below. Convert the extracted value to a floating
point number and print it out.
'''
text = "X-DSPAM-Confidence:    0.8475";

char= text.find(':')
numb= text[char+1 :]
num = numb.strip()

print(float(num))


================================================
FILE: Course-2/Assignments/Assignment_chapter7.py
================================================
'''
7.1 Write a program that prompts for a file name, then opens that file and
reads through the file, and print the contents of the file in upper case.
Use the file words.txt to produce the output below.
You can download the sample data at http://www.py4e.com/code3/words.txt
'''
fname = input("Enter file name: ")
fh = open(fname)
f = fh.read()
final = f.upper().rstrip()
print (final)


'''
7.2 Write a program that prompts for a file name, then opens that file and
reads through the file, looking for lines of the form:
X-DSPAM-Confidence:    0.8475
Count these lines and extract the floating point values from each of the lines
and compute the average of those values and produce an output as shown below.
Do not use the sum() function or a variable named sum in your solution.
You can download the sample data at http://www.py4e.com/code3/mbox-short.txt
when you are testing below enter mbox-short.txt as the file name.
'''
fname = input("Enter file name: ")
fh = open(fname)
count = 0
add = 0
for line in fh:
    if not line.startswith("X-DSPAM-Confidence:") : continue
    count += 1
    char = line.find(':')
    numb = line[char+1:]
    num = numb.strip()
    add += float(num)
print("Average spam confidence:", add/count)


================================================
FILE: Course-2/Assignments/Assignment_chapter8.py
================================================
'''
8.4 Open the file romeo.txt and read it line by line. For each line, split the
line into a list of words using the split() method. The program should build a
list of words. For each word on each line check to see if the word is already
in the list and if not append it to the list. When the program completes, sort
and print the resulting words in alphabetical order.
You can download the sample data at http://www.py4e.com/code3/romeo.txt
'''
fname = input("Enter file name: ")
fh = open(fname)
lst = list()
for line in fh:
    words= line.split()
    for word in words:
        if word in lst:
            continue
        lst.append(word)

print(sorted(lst))


'''
8.5 Open the file mbox-short.txt and read it line by line. When you find a line
that starts with 'From ' like the following line:
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
You will parse the From line using split() and print out the second word in the
line (i.e. the entire address of the person who sent the message). Then print
out a count at the end.
Hint: make sure not to include the lines that start with 'From:'.

You can download the sample data at http://www.py4e.com/code3/mbox-short.txt
'''
fname = input("Enter file name: ")
fh = open(fname)
count = 0
for line in fh:
    line = line.rstrip()
    if len(line) < 3:
        continue
    words = line.split()
    if words[0] != 'From':
        continue
    print(words[1])
    count += 1

print("There were " + str(count) + " lines in the file with From as the first word")


================================================
FILE: Course-2/Assignments/Assignment_chapter9.py
================================================
'''
9.4 Write a program to read through the mbox-short.txt and figure out who has
the sent the greatest number of mail messages. The program looks for 'From '
lines and takes the second word of those lines as the person who sent the mail.
The program creates a Python dictionary that maps the sender's mail address to a
count of the number of times they appear in the file. After the dictionary is
produced, the program reads through the dictionary using a maximum loop to find
the most prolific committer.
'''
name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
senders1 = list()
senders = dict()
for line in handle:
    line = line.split()
    if len(line) < 3 or line[0] != 'From':
        continue
    senders1.append(line[1])

for sender in senders1:
    senders[sender] = senders.get(sender, 0) + 1

maximum = None
theone = None
for sender, count in senders.items():
    if maximum is None or count > maximum:
        maximum = count
        theone = sender

print(theone, maximum)


================================================
FILE: Course-2/Quizzes/quiz_chapter10.md
================================================
** 1- What is the difference between a Python tuple and Python list?**

    1) Lists maintain the order of the items and tuples do not maintain order
    2) Tuples can be expanded after they are created and lists cannot
    3) Lists are indexed by integers and tuples are indexed by strings
    4) Lists are mutable and tuples are not mutable

_Answer is 4) Lists are mutable and tuples are not mutable_

** 2- Which of the following methods work both in Python lists and Python tuples?**

    1) reverse()
    2) sort()
    3) append()
    4) index()
    5) pop()

_Answer is 4) index()_

** 3- What will end up in the variable y after this code is executed?**
```Python
x , y = 3, 4
```
    1) 4
    2) A two item tuple
    3) 3
    4) A dictionary with the key 3 mapped to the value 4
    5) A two item list

_Answer is 1) 4_

** 4- In the following Python code, what will end up in the variable y?**
```Python
x = { 'chuck' : 1 , 'fred' : 42, 'jan': 100}
y = x.items()
```
    1) A list of integers
    2) A tuple with three integers
    3) A list of strings
    4) A list of tuples

_Answer is 4) A list of tuples_

** 5- Which of the following tuples is greater than x in the following Python sequence?**
```Python
x = (5, 1, 3)
if ??? > x :
   ...
```
    1) (5, 0, 300)
    2) (6, 0, 0)
    3) (0, 1000, 2000)
    4) (4, 100, 200)

_Answer is 2) (6, 0, 0)_

** 6- What does the following Python code accomplish, assuming the c is a non-empty dictionary?**
```Python
tmp = list()
for k, v in c.items() :
    tmp.append( (v, k) )
```
    1) It computes the largest of all of the values in the dictionary
    2) It sorts the dictionary based on its key values
    3) It creates a list of tuples where each tuple is a value, key pair
    4) It computes the average of all of the values in the dictionary

_Answer is 3) It creates a list of tuples where each tuple is a value, key pair_

** 7- If the variable data is a Python list, how do we sort it in reverse order?**

    1) data.sort.reverse()
    2) data = sortrev(data)
    3) data = data.sort(-1)
    4) data.sort(reverse=True)

_Answer is 4) data.sort(reverse=True)_

** 8- Using the following tuple, how would you print 'Wed'? **
```Python
days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
```
    1) print(days.get(1,-1))
    2) print(days(2))
    3) print[days(2)]
    4) print(days[2])
    5) print(days{2})
    6) print(days[1])

_Answer is 4) print(days[2])_

** 9- In the following Python loop, why are there two iteration variables (k and v)?**
```Python
c = {'a':10, 'b':1, 'c':22}
for k, v in c.items() :
    ...
```
    1) Because the items() method in dictionaries returns a list of tuples
    2) Because the keys for the dictionary are strings
    3) Because for each item we want the previous and current key
    4) Because there are two items in the dictionary

_Answer is 1) Because the items() method in dictionaries returns a list of tuples_

** 10- Given that Python lists and Python tuples are quite similar - when might you prefer to use a tuple over a list?**

    1) For a list of items that want to use strings as key values instead of integers
    2) For a temporary variable that you will use and discard without modifying
    3) For a list of items that will be extended as new items are found
    4) For a list of items you intend to sort in place

_Answer is 2) For a temporary variable that you will use and discard without modifying_


================================================
FILE: Course-2/Quizzes/quiz_chapter6.md
================================================
** 1- What does the following Python Program print out?**
```Python
str1 = "Hello"
str2 = 'there'
bob = str1 + str2
print(bob)
```
    1) Hellothere
    2) 0
    3) Hello
       there
    4) Hello

_Answer is 1) Hellothere_

** 2- What does the following Python program print out?**
```Python
x = '40'
y = int(x) + 2
print(y)
```
    1) int402
    2) 42
    3) 402
    4) x2

_Answer is 2) 42_

** 3- How would you use the index operator [] to print out the letter q from the following string? **
```Python
x = 'From marquard@uct.ac.za'
```
    1) print x[-1]
    2) print(x[7])
    3) print(x[q])
    4) print(x[9])
    5) print(x[8])

_Answer is 5) print(x[8])_

** 4- How would you use string slicing [:] to print out 'uct' from the following string?**
```Python
x = 'From marquard@uct.ac.za'
```
    1) print(x[14:17])
    2) print(x[14:3])
    3) print(x[14/17])
    4) print(x[14+17])
    5) print(x[15:3])
    6) print(x[15:18])

_Answer is 1) print(x[14:17])_

** 5- What is the iteration variable in the following Python code?**
```Python
for letter in 'banana' :
    print(letter)
```
    1) in
    2) print
    3) letter
    4) for
    5) 'banana'

_Answer is 3) letter_

** 6- What does the following Python code print out?**
```Python
print(len('banana')*7)
```
    1) 42
    2) banana7
    3) bananabananabananabananabananabananabanana
    4) 0

_Answer is 1) 42_

** 7- How would you print out the following variable in all upper case in Python?**
```Python
greet = 'Hello Bob'
```
```Python
1)
int i=0;
char c;
while (greet[i]){
  c=greet[i];
  putchar(toupper(c));
  i++;
}
```
```Python
2)
puts(greet.ucase);
```
```Python
3)
print(upper(greet))
```
```Python
4)
print(greet.upper())
```
_Answer is 4) print(greet.upper())_

** 8- Which of the following is not a valid string method in Python?**

    1) shout()
    2) split()
    3) join()
    4) startswith()

_Answer is 1) shout()_

** 9- What will the following Python code print out?**
```Python
data = 'From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008'
pos = data.find('.')
print(data[pos:pos+3])
```
    1) Sat
    2) .ma
    3) uct
    4) mar

_Answer is 2) .ma_

** 10- Which of the following string methods removes whitespace from both the beginning and end of a string? **

    1) strip()
    2) strtrunc()
    3) split()
    4) wsrem()

_Answer is 1) strip()_


================================================
FILE: Course-2/Quizzes/quiz_chapter7.md
================================================
** 1- Given the architecture and terminology we introduced in Chapter 1,
where are files stored?**

    1) Motherboard
    2) Main Memory
    3) Machine Language
    4) Secondary memory

_Answer is 4) Secondary memory_

** 2- What is stored in a "file handle" that is returned from a successful open() call?**

    1) The handle is a connection to the file's data
    2) All the data from the file is read into memory and stored in the handle
    3) The handle contains the first 10 lines of a file
    4) The handle has a list of all of the files in a particular folder on the hard drive

_Answer is 1) The handle is a connection to the file's data_

** 3- What do we use the second parameter of the open() call to indicate?**

    1) What disk drive the file is stored on
    2) How large we expect the file to be
    3) The list of folders to be searched to find the file we want to open
    4) Whether we want to read data from the file or write data to the file

_Answer is 4) Whether we want to read data from the file or write data to the file_

** 4- What Python function would you use if you wanted to prompt the user for a file name to open?**

    1) input()
    2) read()
    3) file_input()
    4) cin

_Answer is 1) input()_

** 5- What is the purpose of the newline character in text files?**

    1) It enables random movement throughout the file
    2) It indicates the end of one line of text and the beginning of another line of text
    3) It allows us to open more than one files and read them in a synchronized manner
    4) It adds a new network connection to retrieve files from the network

_Answer is 2) It indicates the end of one line of text and the beginning of another line of text_

** 6- If we open a file as follows:**
```Python
xfile = open('mbox.txt')
```
_What statement would we use to read the file one line at a time?_

```Python
1) while (<xfile>) {

2) while ( getline (xfile,line) ) {

3) READ (xfile,*,END=10) line

4) for line in xfile:
```

_Answer is 4) for line in xfile:_


** 7- What is the purpose of the following Python code?**
```Python
fhand = open('mbox.txt')
x = 0
for line in fhand:
       x = x + 1
print(x)
```

    1) Convert the lines in mbox.txt to lower case
    2) Remove the leading and trailing spaces from each line in mbox.txt
    3) Reverse the order of the lines in mbox.txt
    4) Count the lines in the file 'mbox.txt'

_Answer is 4) Count the lines in the file 'mbox.txt'_

** 8- If you write a Python program to read a text file and you see extra blank lines in the output that are not present in the file input as shown below, what Python string function will likely solve the problem?**
```
From: stephen.marquard@uct.ac.za

From: louis@media.berkeley.edu

From: zqian@umich.edu

From: rjlowe@iupui.edu
```
    1) trim()
    2) split()
    3) ljust()
    4) rstrip()

_Answer is 2) 4) rstrip()_


** 9- The following code sequence fails with a traceback when the user enters a file that does not exist. How would you avoid the traceback and make it so you could print out your own error message when a bad file name was entered?**
```Python
fname = input('Enter the file name: ')
fhand = open(fname)
```
    1) setjmp / longjmp
    2) try / except
    3) try / catch / finally
    4) signal handlers

_Answer is 2) try / except_

** 10- What does the following Python code do?**
```Python
fhand = open('mbox-short.txt')
inp = fhand.read()
```
    1) Checks to see if the file exists and can be written
    2) Reads the entire file into the variable inp as a string
    3) Turns the text in the file into a graphic image like a PNG or JPG
    4) Prompts the user for a file name

_Answer is 2) Reads the entire file into the variable inp as a string_


================================================
FILE: Course-2/Quizzes/quiz_chapter8.md
================================================
** 1- How are "collection" variables different from normal variables?**

    1) Collection variables can only store a single value
    2) Collection variables pull multiple network documents together
    3) Collection variables can store multiple values in a single variable
    4) Collection variables merge streams of output into a single stream

_Answer is 3) Collection variables can store multiple values in a single variable_

** 2- What are the Python keywords used to construct a loop to iterate through a list?**

    1) def / return
    2) try / except
    3) foreach / in
    4) for / in

_Answer is 4) for / in_

** 3- For the following list, how would you print out 'Sally'?**
```Python
friends = [ 'Joseph', 'Glenn', 'Sally' ]
```

    1) print(friends[2:1])
    2) print friends[3]
    3) print(friends[2])
    4) print(friends['Sally'])

_Answer is 3) print(friends[2])_

** 4- What would the following Python code print out?**
```Python
fruit = 'Banana'
fruit[0] = 'b'
print(fruit)
```

    1) [0]
    2) Nothing would print - the program fails with a traceback
    3) B
    4) b
    5) Banana
    6) banana

_Answer is 2) Nothing would print - the program fails with a traceback_

** 5- Which of the following Python statements would print out the length of a list stored in the variable data?**

    1) print(data.length())
    2) print(strlen(data))
    3) print(len(data))
    4) print(data.Len)
    5) print(length(data))
    6) print(data.length)

_Answer is 3) print(len(data))_

** 6- What type of data is produced when you call the range() function?**
```Python
x = range(5)
```
    1) A boolean (true/false) value
    2) A list of characters
    3) A list of words
    4) A list of integers
    5) A string

_Answer is 4) A list of integers_

** 7- What does the following Python code print out?**
```Python
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(len(c))
```
    1) 21
    2) [4, 5, 6]
    3) 15
    4) [1, 2, 3, 4, 5, 6]
    5) [1, 2, 3]
    6) 6

_Answer is 6) 6_

** 8- Which of the following slicing operations will produce the list [12, 3]?**
```Python
t = [9, 41, 12, 3, 74, 15]
```
    1) t[1:3]
    2) t[2:2]
    3) t[2:4]
    4) t[12:3]
    5) t[:]

_Answer is 3) t[2:4]_

** 9- What list method adds a new item to the end of an existing list?**

    1) index()
    2) append()
    3) forward()
    4) add()
    5) pop()
    6) push()

_Answer is 2) append()_

** 10- What will the following Python code print out?**
```Python
friends = [ 'Joseph', 'Glenn', 'Sally' ]
friends.sort()
print(friends[0])
```
    1) Sally
    2) Joseph
    3) Glenn
    4) friends

_Answer is 3) Glenn_


================================================
FILE: Course-2/Quizzes/quiz_chapter9.md
================================================
** 1- How are Python dictionaries different from Python lists?**

    1) Python lists maintain order and dictionaries do not maintain order
    2) Python lists can store strings and dictionaries can only store words
    3) Python lists store multiple values and dictionaries store a single value
    4) Python dictionaries are a collection and lists are not a collection

_Answer is 1) Python lists maintain order and dictionaries do not maintain order_

** 2- What is a term commonly used to describe the Python dictionary feature in other programming languages?**

    1) Closures
    2) Sequences
    3) Lambdas
    4) Associative arrays

_Answer is 4) Associative arrays_

** 3- What would the following Python code print out?**
```Python
stuff = dict()
print(stuff['candy'])
```
    1) 0
    2) -1
    3) The program would fail with a traceback
    4) candy

_Answer is 3) The program would fail with a traceback_

** 4- What would the following Python code print out?**
```Python
stuff = dict()
print(stuff.get('candy',-1))
```
    1) -1
    2) 0
    3) 'candy'
    4) The program would fail with a traceback

_Answer is 1) -1_

** 5- (T/F) When you add items to a dictionary they remain in the order in which you added them.**

    1) False
    2) True

_Answer is 1) False_

** 6- What is a common use of Python dictionaries in a program?**

    1) Sorting a list of names into alphabetical order
    2) Splitting a line of input into words using a space as a delimiter
    3) Computing an average of a set of numbers
    4) Building a histogram counting the occurrences of various strings in a file

_Answer is 4) Building a histogram counting the occurrences of various strings in a file_

** 7- Which of the following lines of Python is equivalent to the following sequence of statements assuming that counts is a dictionary?**
```Python
if key in counts:
    counts[key] = counts[key] + 1
else:
    counts[key] = 1
```
    1) counts[key] = counts.get(key,-1) + 1
    2) counts[key] = (counts[key] * 1) + 1
    3) counts[key] = counts.get(key,0) + 1
    4) counts[key] = (key in counts) + 1
    5) counts[key] = key + 1

_Answer is 3) counts[key] = counts.get(key,0) + 1_

** 8- In the following Python, what does the for loop iterate through?**
```Python
x = dict()
...
for y in x :
     ...
```
    1) It loops through the values in the dictionary
    2) It loops through the integers in the range from zero through the length of the dictionary
    3) It loops through the keys in the dictionary
    4) It loops through all of the dictionaries in the program

_Answer is 3) It loops through the keys in the dictionary_

** 9- Which method in a dictionary object gives you a list of the values in the dictionary?**

    1) keys()
    2) items()
    3) all()
    4) each()
    5) values()

_Answer is 5) values()_

** 10- What is the purpose of the second parameter of the get() method for Python dictionaries?**

    1) An alternate key to use if the first key cannot be found
    2) The value to retrieve
    3) The key to retrieve
    4) To provide a default value if the key is not found

_Answer is 4) To provide a default value if the key is not found_


================================================
FILE: Course-3/Assignments/Assignment_chapter11.py
================================================
import csv
import re

filename = r'C:\Users\Omar\Desktop\py4e\Course-3\Assignments\regex_sum_135850.txt'
f = open(filename)
d = f.read()
y = re.findall('[0-9]+', d)
sum = 0
for i in range(len(y)):
    c = int(y[i])
    sum += c

print(sum)


================================================
FILE: Course-3/Assignments/Assignment_chapter12.py
================================================
import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/intro-short.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if len(data) < 1:
        break
    print(data.decode(),end='')

mysock.close()


================================================
FILE: Course-3/Assignments/Assignment_chapter13-1.py
================================================
from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

# url: http://py4e-data.dr-chuck.net/comments_135852.html
url = input('Enter - ')
html = urlopen(url, context=ctx).read()
soup = BeautifulSoup(html, "html.parser")

spans = soup('span')
numbers = []

for span in spans:
    numbers.append(int(span.string))

print (sum(numbers))
# Answer is 2565


================================================
FILE: Course-3/Assignments/Assignment_chapter13-2.py
================================================
from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

# url is http://py4e-data.dr-chuck.net/known_by_Reuben.html
url = input("Enter URL: ")
count = int(input("Enter count: "))
position = int(input("Enter position: "))


names = []

while count > 0:
    print ("retrieving: {0}".format(url))
    html = urlopen(url, context=ctx).read()
    soup = BeautifulSoup(html, "html.parser")
    anchors = soup('a')
    name = anchors[position-1].string
    names.append(name)
    url = anchors[position-1]['href']
    count -= 1

print (names[-1])


================================================
FILE: Course-3/Assignments/Assignment_chapter14.py
================================================
import urllib.request, urllib.parse, urllib.error
import xml.etree.ElementTree as ET

serviceurl = 'http://maps.googleapis.com/maps/api/geocode/xml?'

url = input('Enter location: ')

print('Retrieving', url)
uh = urllib.request.urlopen(url)
data = uh.read()
print('Retrieved', len(data), 'characters')
print(data.decode())
tree = ET.fromstring(data)

counts =  tree.findall('.//count')
print ("Count: " + str(len(counts)))

accumulator = 0

for count in counts:
    accumulator += int(count.text)

print ("Sum:" + str(accumulator))


================================================
FILE: Course-3/Assignments/Assignment_chapter15-1.py
================================================
import json
import urllib.request, urllib.parse, urllib.error
import xml.etree.ElementTree as ET

url = input('Enter location: ')
address = urllib.request.urlopen(url)
data = address.read()

print('Retrieving', url)
print('Retrieved', len(data), 'characters')

info = json.loads(data)
info = info["comments"]

total = 0

for item in info:
    print("Count: ",item["count"])
    total = total + int(item["count"])
    print("Sum: ", total)

print("Final sum: ", total)


================================================
FILE: Course-3/Assignments/Assignment_chapter15-2.py
================================================
import json
import urllib.request, urllib.parse, urllib.error
import xml.etree.ElementTree as ET

place_name = input("Enter a place name: ")
base_url = "http://python-data.dr-chuck.net/geojson?sensor=false&"
address_param = urllib.parse.urlencode({'address': place_name})
target = base_url + address_param

print ("Retrieving {0}".format(target))
connection = urllib.request.urlopen(target)
raw_data = connection.read()
print ("Retrieved {0} characters".format(len(raw_data)))
parsed_data = json.loads(raw_data)

#print(parsed_data)
print ("Place id", parsed_data["results"][0]["place_id"])


================================================
FILE: Course-3/Assignments/regex_sum_135850.txt
================================================
This file contains the actual data for your assignment - good luck!


Why should you learn to write programs?

Writing 1977 programs 9390 (or 4356 programming) is a very creative 
 and rewarding activity.  You can write programs for 
many reasons, ranging from making your living to solving
a difficult data analysis problem to having fun to helping
someone else solve a problem.  This book assumes that 
everyone needs to know how to program, and that once 
you know how to program you will figure out what you want 
to do with your newfound skills.  
4815 5208 2594
We are surrounded in our daily lives with computers ranging 
from laptops to cell phones.  We can think of these computers
as our personal assistants who can take care of many things
on our behalf.  The hardware in our current-day computers 
is essentially built to continuously ask us the question, 
What would you like me to do next?

Programmers add an operating system and a set of applications
to the hardware and we end up with a Personal Digital
Assistant that is quite helpful and capable of helping
us do many different things.

Our computers are fast and have vast amounts of memory and 
could be very helpful to us if we only knew the language to
speak to explain to the computer what we would like it to 
do next.  If we knew this language, we could tell the 
computer to do tasks on our behalf that were repetitive.  
Interestingly, the kinds of things computers can do best
are often the kinds of things that we humans find boring
and mind-numbing.

For example, look at the first three paragraphs of this
chapter and tell me the most commonly used word and how
many times the word is used.  While you were able to read
and understand the words in a few seconds, counting them
is almost painful because it is not the kind of problem 
that human minds are designed to solve.  For a computer
the opposite is true, reading and understanding text 
948 from a piece of paper is hard for a computer to do 
but counting the words and telling you how many times
the most used word was used is very easy for the
computer:
8208 
Our personal information analysis assistant quickly 
told us that the word to was used sixteen times in the
first three paragraphs of this chapter.

This very fact that computers are good at things 
that humans are not is why you need to become
skilled at talking computer language.  Once you learn
this new language, you can delegate mundane tasks
to your partner (the computer), leaving more time 
for you to do the 
1678 things that you are uniquely suited for.  You bring 5317
creativity, intuition, and inventiveness to this
partnership.  

Creativity and motivation

While this book is not intended for professional programmers, professional
programming can be a very rewarding job both financially and personally.
Building useful, elegant, and clever programs for others to use is a very
creative activity.  Your computer or Personal Digital Assistant (PDA) 
usually contains many different programs from many different groups of 
programmers, each competing for your attention and interest.  They try 
their best to meet your needs and give you a great user experience in the
process.   In some situations, when you choose a piece of software, the 
3378 programmers are directly compensated because of your choice.

If we think of programs as the creative output of groups of programmers,
perhaps the following figure is a more sensible version of our PDA:

For now, our primary motivation is not to make money or please end users, but
instead for us to be more productive in handling the data and 
information that we will encounter in our lives.
When you first start, you will be both the programmer and the end user of
your programs.  As you gain skill as a programmer and
programming feels more creative to you, your thoughts may turn
toward developing programs for others.

Computer hardware architecture

Before we start learning the language we 
speak 3564 to 994 give 5411 instructions to computers to 
 develop software, we need to learn a small amount about 
how computers are built.  

Central Processing Unit (or CPU) is 
the part of the computer that is built to be obsessed 
with what is next?  If your computer is rated
at three Gigahertz, it means that the CPU will ask What next?
three billion times per second.  You are going to have to 
learn how to talk fast to keep up with the CPU.

Main Memory is used to store information
that the CPU needs in a hurry.  The main memory is nearly as 
fast as the CPU.  But the information stored in the main
memory vanishes when the computer is turned off.

Secondary Memory is also used to store
information, but it is much slower than the main memory.
The advantage of the secondary memory is that it can
store information even when there is no power to the
computer.  Examples of secondary memory are disk drives
or flash memory (typically found in USB sticks and portable
music players).

Input 8215 and 3093 Output 6326 Devices are simply our
 screen, keyboard, mouse, microphone, speaker, touchpad, etc.  
They are all of the ways we interact with the computer.

2364 These days, most computers also have a
Network Connection to retrieve information over a network.
We can think of the network as a very slow place to store and
retrieve data that might not always be up.  So in a sense,
the network is a slower and at times unreliable form of
Secondary Memory.

While most of the detail of how these components work is best left 
to computer builders, it helps to have some terminology
so we can talk about these different parts as we write our programs.

As a programmer, your job is to use and orchestrate 
609 each of these resources to solve the problem that you need to solve
and analyze the data you get from the solution.  As a programmer you will 
mostly be talking to the CPU and telling it what to 
do next.  Sometimes you will tell the CPU to use the main memory,
secondary memory, network, or the input/output devices.

You 9035 need 723 to 9288 be the person who answers the CPU's What next? 
 1461 question.  But it would be very uncomfortable to shrink you 5535
down to five mm  tall and insert you into the computer just so you 
could issue a command three billion times per second.  So instead,
you must write down your instructions in advance.
We call these stored instructions a program and the act 
of writing these instructions down and getting the instructions to 
be correct programming.

Understanding programming

In the rest of this book, we will try to turn you into a person
who is skilled in the art of programming.  In the end you will be a 
programmer --- perhaps not a professional programmer, but 
9904 at least you will have the skills to look at a data/information 3412
analysis problem and develop a program to solve the problem.

problem solving
9397 213 5056
In a sense, you need two skills to be a programmer:

First, you need to know the programming language (Python) -
you need to know the vocabulary and the grammar.  You need to be able 
to 4288 spell 264 the 4738 words in this new language properly and know how to construct 
 well-formed sentences in this new language.

Second, you need to tell a story.  In writing a story,
you 4245 combine 3594 words 6180 and sentences to convey an idea to the reader. 
 There is a skill and art in constructing the story, and skill in
story writing is improved by doing some writing and getting some
feedback.  In programming, our program is the story and the 
problem you are trying to solve is the idea.

itemize

Once you learn one programming language such as Python, you will 
find it much easier to learn a second programming language such
as JavaScript or C++.  The new programming language has very different 
vocabulary and grammar but the problem-solving skills 
will be the same across all programming languages.

You will learn the vocabulary and sentences of Python pretty quickly.
It will take longer for you to be able to write a coherent program
to solve a brand-new problem.  We teach programming much like we teach
writing.  We start reading and explaining programs, then we write 
simple programs, and then we write increasingly complex programs over time.
At some point you get your muse and see the patterns on your own
and can see more naturally how to take a problem and 
write a program that solves that problem.  And once you get 
to that point, programming becomes a very pleasant and creative process.  

We start with the vocabulary and structure of Python programs.  Be patient
as the simple examples remind you of when you started reading for the first
time. 

Words and sentences

Unlike human languages, the Python vocabulary is actually pretty small.
We call this vocabulary the reserved words.  These are words that
have very special meaning to Python.  When Python sees these words in 
a Python program, they have one and only one meaning to Python.  Later
as you write programs you will make up your own words that have meaning to 
you called variables.   You will have great latitude in choosing
your names for your variables, but you cannot use any of Python's 
reserved words as a name for a variable.

When we train a dog, we use special words like
sit, stay, and fetch.  When you talk to a dog and
don't use any of the reserved words, they just look at you with a 
quizzical look on their face until you say a reserved word.  
For example, if you say, 
I wish more people would walk to improve their overall health, 
what most dogs likely hear is,
6417 blah blah blah walk blah blah blah blah.
That is because walk is a reserved word in dog language.  

The reserved words in the language where humans talk to 
Python include the following:

and       del       from      not       while    
as        elif      global    or        with     
3828 assert    else      if        pass      yield 2838
break     except    import    print              
class     exec      in        raise              
continue  finally   is        return             
def       for       lambda    try

That is it, and unlike a dog, Python is already completely trained.
When you say try, Python will try every time you say it without
fail.

4257 We will learn these reserved words and how they are used in good time, 1600
but for now we will focus on the Python equivalent of speak (in 
human-to-dog 439 language). 4784  864 The nice thing about telling Python to speak
 is that we can even tell it what to say by giving it a message in quotes:

And we have even written our first syntactically correct Python sentence.
Our sentence starts with the reserved word print followed
by a string of text of our choosing enclosed in single quotes.

Conversing with Python

Now that we have a word and a simple sentence that we know in Python,
we need to know how to start a conversation with Python to test 
our new language skills.

Before you can converse with Python, you must first install the Python
software on your computer and learn how to start Python on your 
computer.  That is too much detail for this chapter so I suggest
that you consult www.py4e.com where I have detailed
instructions and screencasts of setting up and starting Python 
on Macintosh and Windows systems.  At some point, you will be in 
a terminal or command window and you will type python and 
the Python interpreter will start executing in interactive mode
and appear somewhat as follows:
3984 7879 627

The >>> prompt is the Python interpreter's way of asking you, What
do you want me to do next?  Python is ready to have a conversation with
you.  All you have to know is how to speak the Python language.
1895 
Let's say for example that you did not know even the simplest Python language
words or sentences. You might want to use the standard line that astronauts 
use when they land on a faraway planet and try to speak with the inhabitants
of the planet:

This is not going so well.  Unless you think of something quickly,
the inhabitants of the planet are likely to stab you with their spears, 
put you on a spit, roast you over a fire, and eat you for dinner.

At this point, you should also realize that while Python 
is amazingly complex and powerful and very picky about 
the syntax you use to communicate with it, Python is 
not intelligent.  You are really just having a conversation
with yourself, but using proper syntax.

In a sense, when you use a program written by someone else
the 809 conversation 1949 is 600 between you and those other
 programmers with Python acting as an intermediary.  Python
is a way for the creators of programs to express how the 
conversation is supposed to proceed.  And
in just a few more chapters, you will be one of those
programmers using Python to talk to the users of your program.

Before we leave our first conversation with the Python 
interpreter, you should probably know the proper way
to say good-bye when interacting with the inhabitants
of Planet Python:

You will notice that the error is different for the first two
incorrect attempts.   The second error is different because 
if is a reserved word and Python saw the reserved word
and thought we were trying to say something but got the syntax
of the sentence wrong.

Terminology: interpreter and compiler

Python 1453 is 8429 a 4458 high-level language intended to be relatively
 straightforward for humans to read and write and for computers
to read and process.  Other high-level languages include Java, C++,
PHP, Ruby, Basic, Perl, JavaScript, and many more.  The actual hardware
inside the Central Processing Unit (CPU) does not understand any
of these high-level languages.

The CPU understands a language we call machine language.  Machine
language is very simple and frankly very tiresome to write because it 
is represented all in zeros and ones.

Machine language seems quite simple on the surface, given that there 
are only zeros and ones, but its syntax is even more complex
and far more intricate than Python.  So very few programmers ever write
machine language.  Instead we build various translators to allow
programmers to write in high-level languages like Python or JavaScript
and these translators convert the programs to machine language for actual
8636 execution by the CPU. 9553

Since machine language is tied to the computer hardware, machine language
is not portable across different types of hardware.  Programs written in 
high-level languages can be moved between different computers by using a 
different interpreter on the new machine or recompiling the code to create
a machine language version of the program for the new machine.

These programming language translators fall into two general categories:
7592 (one) interpreters and (two) compilers. 8122

An interpreter reads the source code of the program as written by the
programmer, parses the source code, and interprets the instructions on the fly.
Python is an interpreter and when we are running Python interactively, 
we can type a line of Python (a sentence) and Python processes it immediately
and is ready for us to type another line of Python.   

Some of the lines of Python tell Python that you want it to remember some 
value for later.   We need to pick a name for that value to be remembered and
we can use that symbolic name to retrieve the value later.  We use the 
term variable to refer to the labels we use to refer to this stored data.

1740 In this example, we ask Python to remember the value six and use the label x
so we can retrieve the value later.   We verify that Python has actually remembered
1463 the value using x and multiply
it by seven and put the newly computed value in y.  Then we ask Python to print out
the value currently in y.
9813 
Even though we are typing these commands into Python one line at a time, Python
is treating them as an ordered sequence of statements with later statements able
to retrieve data created in earlier statements.   We are writing our first 
simple paragraph with four sentences in a logical and meaningful order.

It is the nature of an interpreter to be able to have an interactive conversation
as shown above.  A compiler needs to be handed the entire program in a file, and then 
it runs a process to translate the high-level source code into machine language
and then the compiler puts the resulting machine language into a file for later
execution.
100 3252 7646
If you have a Windows system, often these executable machine language programs have a
suffix of .exe or .dll which stand for executable and dynamic link
library respectively.  In Linux and Macintosh, there is no suffix that uniquely marks
a file as executable.

If you were to open an executable file in a text editor, it would look 
completely crazy and be unreadable:

It is not easy to read or write machine language, so it is nice that we have
compilers that allow us to write in high-level
languages like Python or C.

Now at this point in our discussion of compilers and interpreters, you should 
be wondering a bit about the Python interpreter itself.  What language is 
it written in?  Is it written in a compiled language?  When we type
python, what exactly is happening?

The Python interpreter is written in a high-level language called C.  
You can look at the actual source code for the Python interpreter by
going to www.python.org and working your way to their source code.
So Python is a program itself and it is compiled into machine code.
When 6797 you 6302 installed 3119 Python on your computer (or the vendor installed it),
 you copied a machine-code copy of the translated Python program onto your
system.   In Windows, the executable machine code for Python itself is likely
in a file.

That is more than you really need to know to be a Python programmer, but
sometimes it pays to answer those little nagging questions right at 
the beginning.

Writing a program

Typing commands into the Python interpreter is a great way to experiment 
with Python's features, but it is not recommended for solving more complex problems.
2127  7297
When we want to write a program, 
we use a text editor to write the Python instructions into a file,
which is called a script.  By
convention, Python scripts have names that end with .py.

script

To execute the script, you have to tell the Python interpreter 
the name of the file.  In a Unix or Windows command window, 
you would type python hello.py as follows:

We call the Python interpreter and tell it to read its source code from
7672 the file hello.py instead of prompting us for lines of Python code
interactively.

You will notice that there was no need to have quit() at the end of
the Python program in the file.   When Python is reading your source code
from a file, it knows to stop when it reaches the end of the file.

What is a program?

The definition of a program at its most basic is a sequence
of Python statements that have been crafted to do something.
Even our simple hello.py script is a program.  It is a one-line
program and is not particularly useful, but in the strictest definition,
it is a Python program.

It might be easiest to understand what a program is by thinking about a problem 
that a program might be built to solve, and then looking at a program
that would solve that problem.

Lets say you are doing Social Computing research on Facebook posts and 
you are interested in the most frequently used word in a series of posts.
You could print out the stream of Facebook posts and pore over the text
looking for the most common word, but that would take a long time and be very 
mistake prone.  You would be smart to write a Python program to handle the
task quickly and accurately so you can spend the weekend doing something 
fun.

For example, look at the following text about a clown and a car.  Look at the 
text and figure out the most common word and how many times it occurs.

Then imagine that you are doing this task looking at millions of lines of 
text.  Frankly it would be quicker for you to learn Python and write a 
Python program to count the words than it would be to manually 
scan the words.

The even better news is that I already came up with a simple program to 
find the most common word in a text file.  I wrote it,
tested it, and now I am giving it to you to use so you can save some time.

You don't even need to know Python to use this program.  You will need to get through 
Chapter ten of this book to fully understand the awesome Python techniques that were
used to make the program.  You are the end user, you simply use the program and marvel
at its cleverness and how it saved you so much manual effort.
You simply type the code 
into a file called words.py and run it or you download the source 
code from http://www.py4e.com/code3/ and run it.

This is a good example of how Python and the Python language are acting as an intermediary
between you (the end user) and me (the programmer).  Python is a way for us to exchange useful
instruction sequences (i.e., programs) in a common language that can be used by anyone who 
installs Python on their computer.  So neither of us are talking to Python,
instead we are communicating with each other through Python.

The building blocks of programs

In the next few chapters, we will learn more about the vocabulary, sentence structure,
paragraph structure, and story structure of Python.  We will learn about the powerful
capabilities of Python and how to compose those capabilities together to create useful
programs.

There are some low-level conceptual patterns that we use to construct programs.  These
constructs are not just for Python programs, they are part of every programming language
from machine language up to the high-level languages.

description

Get data from the outside world.  This might be 
reading data from a file, or even some kind of sensor like 
a microphone or GPS.  In our initial programs, our input will come from the user
typing data on the keyboard.

Display the results of the program on a screen
or store them in a file or perhaps write them to a device like a
speaker to play music or speak text.

Perform statements one after
another in the order they are encountered in the script.

Check for certain conditions and
then execute or skip a sequence of statements.

Perform some set of statements 
repeatedly, usually with
some variation.

Write a set of instructions once and give them a name
and then reuse those instructions as needed throughout your program.

description

It sounds almost too simple to be true, and of course it is never
so simple.  It is like saying that walking is simply
putting one foot in front of the other.  The art 
of writing a program is composing and weaving these
basic elements together many times over to produce something
that is useful to its users.

The word counting program above directly uses all of 
these patterns except for one.

What could possibly go wrong?

As we saw in our earliest conversations with Python, we must
communicate very precisely when we write Python code.  The smallest
deviation or mistake will cause Python to give up looking at your
program.

Beginning programmers often take the fact that Python leaves no
room for errors as evidence that Python is mean, hateful, and cruel.
While Python seems to like everyone else, Python knows them 
personally and holds a grudge against them.  Because of this grudge,
Python takes our perfectly written programs and rejects them as 
unfit just to torment us.

There is little to be gained by arguing with Python.  It is just a tool.
It has no emotions and it is happy and ready to serve you whenever you
need it.  Its error messages sound harsh, but they are just Python's
call for help.  It has looked at what you typed, and it simply cannot
understand what you have entered.

Python is much more like a dog, loving you unconditionally, having a few
key words that it understands, looking you with a sweet look on its
face (>>>), and waiting for you to say something it understands.
When Python says SyntaxError: invalid syntax, it is simply wagging
its tail and saying, You seemed to say something but I just don't
understand what you meant, but please keep talking to me (>>>).

As your programs become increasingly sophisticated, you will encounter three 
general types of errors:

description

These are the first errors you will make and the easiest
to fix.  A syntax error means that you have violated the grammar rules of Python.
Python does its best to point right at the line and character where 
it noticed it was confused.  The only tricky bit of syntax errors is that sometimes
the mistake that needs fixing is actually earlier in the program than where Python
noticed it was confused.  So the line and character that Python indicates in 
a syntax error may just be a starting point for your investigation.

A logic error is when your program has good syntax but there is a mistake 
in the order of the statements or perhaps a mistake in how the statements relate to one another.
A good example of a logic error might be, take a drink from your water bottle, put it 
in your backpack, walk to the library, and then put the top back on the bottle.

A semantic error is when your description of the steps to take 
is syntactically perfect and in the right order, but there is simply a mistake in 
the program.  The program is perfectly correct but it does not do what
you intended for it to do. A simple example would
be if you were giving a person directions to a restaurant and said, ...when you reach
the intersection with the gas station, turn left and go one mile and the restaurant
is a red building on your left.  Your friend is very late and calls you to tell you that
they are on a farm and walking around behind a barn, with no sign of a restaurant.  
Then you say did you turn left or right at the gas station? and 
they say, I followed your directions perfectly, I have 
them written down, it says turn left and go one mile at the gas station.  Then you say,
I am very sorry, because while my instructions were syntactically correct, they 
sadly contained a small but undetected semantic error.. 

description

Again in all three types of errors, Python is merely trying its hardest to 
do exactly what you have asked.

The learning journey

As you progress through the rest of the book, don't be afraid if the concepts 
don't seem to fit together well the first time.  When you were learning to speak, 
it was not a problem  for your first few years that you just made cute gurgling noises.
And it was OK if it took six months for you to move from simple vocabulary to 
simple sentences and took five or six more years to move from sentences to paragraphs, and a
few more years to be able to write an interesting complete short story on your own.

We want you to learn Python much more rapidly, so we teach it all at the same time
over the next few chapters.  
But it is like learning a new language that takes time to absorb and understand
before it feels natural.
That leads to some confusion as we visit and revisit
topics to try to get you to see the big picture while we are defining the tiny
fragments that make up that big picture.  While the book is written linearly, and
if you are taking a course it will progress in a linear fashion, don't hesitate
to be very nonlinear in how you approach the material.  Look forwards and backwards
and read with a light touch.  By skimming more advanced material without 
fully understanding the details, you can get a better understanding of the why? 
of programming.  By reviewing previous material and even redoing earlier 
exercises, you will realize that you actually learned a lot of material even 
if the material you are currently staring at seems a bit impenetrable.

Usually when you are learning your first programming language, there are a few
wonderful Ah Hah! moments where you can look up from pounding away at some rock
with a hammer and chisel and step away and see that you are indeed building 
a beautiful sculpture.

If something seems particularly hard, there is usually no value in staying up all 
night and staring at it.   Take a break, take a nap, have a snack, explain what you 
are having a problem with to someone (or perhaps your dog), and then come back to it with
fresh eyes.  I assure you that once you learn the programming concepts in the book
you will look back and see that it was all really easy and elegant and it simply 
took you a bit of time to absorb it.
42
The end


================================================
FILE: Course-3/Quizzes/quiz_chapter11.md
================================================
** 1- Which of the following best describes "Regular Expressions"?**

    1) A small programming language unto itself
    2) A way to solve Algebra formulas for the unknown value
    3) The way Python handles and recovers from errors that would otherwise cause a traceback
    4) A way to calculate mathematical values paying attention to operator precedence

_Answer is 1) A small programming language unto itself_

** 2- Which of the following is the way we match the "start of a line" in a regular expression?**

    1) ^
    2) str.startswith()
    3) \linestart
    4) String.startsWith()
    5) variable[0:1]

_Answer is 1) ^_

** 3- What would the following mean in a regular expression? [a-z0-9]**

    1) Match any number of lowercase letters followed by any number of digits
    2) Match a lowercase letter or a digit
    3) Match an entire line as long as it is lowercase letters or digits
    4) Match any text that is surrounded by square braces
    5) Match anything but a lowercase letter or digit

_Answer is 2) Match a lowercase letter or a digit_

** 4- What is the type of the return value of the re.findall() method?

    1) A list of strings
    2) An integer
    3) A boolean
    4) A single character
    5) A string

_Answer is 1) A list of strings_

** 5- What is the "wild card" character in a regular expression (i.e., the character that matches any character)?**

    1) .
    2) *
    3) $
    4) ^
    5) +
    6) ?

_Answer is 1) ._

** 6- What is the difference between the "+" and "*" character in regular expressions?**

    1) The "+" matches at least one character and the "*" matches zero or more characters
    2) The "+" matches upper case characters and the "*" matches lowercase characters
    3) The "+" matches the beginning of a line and the "*" matches the end of a line
    4) The "+" matches the actual plus character and the "*" matches any character
    5) The "+" indicates "start of extraction" and the "*" indicates the "end of extraction"

_Answer is 1) The "+" matches at least one character and the "*" matches zero or more characters_

** 7- What does the "[0-9]+" match in a regular expression?**

    1) Several digits followed by a plus sign
    2) Any number of digits at the beginning of a line
    3) Any mathematical expression
    4) Zero or more digits
    5) One or more digits

_Answer is 5) One or more digits_

** 8- What does the following Python sequence print out?**
```Python
x = 'From: Using the : character'
y = re.findall('^F.+:', x)
print(y)
```
    1) :
    2) ^F.+:
    4) ['From:']
    5) From:
    6) ['From: Using the :']

_Answer is 6) ['From: Using the :']_

** 9- What character do you add to the "+" or "*" to indicate that the match is to be done in a non-greedy manner?**

    1) \g
    2) **
    3) ++
    4) $
    5) ?
    6) ^

_Answer is 5) ?_

** 10- Given the following line of text:**
```Python
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
```
**What would the regular expression '\S+?@\S+' match?**

    1) d@u
    2) \@\
    3) From
    4) marquard@uct
    5) stephen.marquard@uct.ac.za

_Answer is 5) stephen.marquard@uct.ac.za_


================================================
FILE: Course-3/Quizzes/quiz_chapter12.md
================================================
** 1. What do we call it when a browser uses the HTTP protocol to load a file or page from a server and display it in the browser?**


    1) Internet Protocol (IP)
    2) IMAP
    3) SMTP
    4) DECNET
    5) The Request/Response Cycle

_Answer is 5) The Request/Response Cycle_

** 2. Which of the following is most similar to a TCP port number?**

    1) A telephone number
    2) A street number in an address
    3) The distance between two locations
    4) The GPS coordinates of a building
    5) A telephone extension

_Answer is 5) A telephone extension_

** 3. What must you do in Python before opening a socket?**

    1) import tcp
    2) _socket = true
    3) import socket
    4) import tcp-socket
    5) open socket

_Answer is 3) import socket_

**4. In a client-server application on the web using sockets, which must come up first?**

    1) server
    2) client
    3) it does not matter

_Answer is 1) server_

** 5. Which of the following is most like an open socket in an application? **

    1) An "in-progress" phone conversation
    2) Fiber optic cables
    3) The wheels on an automobile
    4) The chain on a bicycle
    5) The ringer on a telephone

_Answer is 1) An "in-progress" phone conversation_

** 6. What does the "H" of HTTP stand for?**

    1) Hyperspeed
    2) Simple
    3) Manual
    4) HyperText
    5) wHolsitic

_Answer is 4) HyperText_

** 7. What is an important aspect of an Application Layer protocol like HTTP?**

    1) How long do we wait before packets are retransmitted?
    2) Which application talks first? The client or server?
    3) What is the IP address for a domain like www.dr-chuck.com?
    4) How much memory does the server need to serve requests?

_Answer is 2) Which application talks first? The client or server?_

** 8. What are the three parts of this URL (Uniform Resource Locator)?**
``` http://www.dr-chuck.com/page1.htm ```

    1) Page, offset, and count
    2) Protocol, document, and offset
    3) Host, offset, and page
    4) Protocol, host, and document
    5) Document, page, and protocol

_Answer is 4) Protocol, host, and document_

** 9. When you click on an anchor tag in a web page like below, what HTTP request is sent to the server?**
```Python
<p>Please click <a href="page1.htm">here</a>.</p>
```

    1) GET
    2) POST
    3) PUT
    4) DELETE
    5) INFO

_Answer is 1) GET_

** 10. Which organization publishes Internet Protocol Standards?**

    1) IETF
    2) IMS
    3) LDAP
    4) SCORM
    5) SIFA

_Amswer is 1) IETF_


================================================
FILE: Course-3/Quizzes/quiz_chapter13.md
================================================
** 1. Which of the following Python data structures is most similar to the value returned in this line of Python:**
```Python
x = urllib.request.urlopen('http://data.pr4e.org/romeo.txt')
```
    1) file handle
    2) list
    3) regular expression
    4) dictionary
    5) socket

_Answer is 1) file handle_

** 2. In this Python code, which line actually reads the data?**
```Python
import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\n\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if (len(data) < 1):
        break
    print(data.decode())
mysock.close()
```

    1) mysock.recv()
    2) socket.socket()
    3) mysock.close()
    4) mysock.connect()
    5) mysock.send()

_Answer is 1) mysock.recv()_

** 3. Which of the following regular expressions would extract the URL from this line of HTML:**
```Python
<p>Please click <a href="http://www.dr-chuck.com">here</a></p>
```
    1) href="(.+)"
    2) href=".+"
    3) http://.*
    4) <.*>

_Answer is1) href="(.+)"_

** 4. In this Python code, which line is most like the open() call to read a file: **
```Python
import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\n\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if (len(data) < 1):
        break
    print(data.decode())
mysock.close()
```
     1) mysock.connect()
     2) import socket
     3) mysock.recv()
     4) mysock.send()
     5) socket.socket()

_Answer is 1) mysock.connect()_


** 5. Which HTTP header tells the browser the kind of document that is being returned?**

    1) HTML-Document:
    2) Content-Type:
    3) Document-Type:
    4) ETag:
    5) Metadata:

_Answer is 2) Content-Type:_

** 6. What should you check before scraping a web site?**

    1) That the web site returns HTML for all pages
    2) That the web site allows scraping
    3) That the web site only has links within the same site
    4) That the web site supports the HTTP GET command

_Answer is 2) That the web site allows scraping_

** 7. What is the purpose of the BeautifulSoup Python library?**

    1) It builds word clouds from web pages
    2) It allows a web site to choose an attractive skin
    3) It repairs and parses HTML to make it easier for a program to understand
    4) It optimizes files that are retrieved many times
    5) It animates web operations to make them more attractive

_Answer is 3) It repairs and parses HTML to make it easier for a program to understand_

** 8. What ends up in the "x" variable in the following code:**
```Python
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')
x = soup('a')
```
    1) A list of all the anchor tags (<a..) in the HTML from the URL
    2) True if there were any anchor tags in the HTML from the URL
    3) All of the externally linked CSS files in the HTML from the URL
    4) All of the paragraphs of the HTML from the URL

_Answer is 1) A list of all the anchor tags (<a..) in the HTML from the URL_

** 9. What is the most common Unicode encoding when moving data between systems?**

     1) UTF-128
     2) UTF-8
     3) UTF-32
     4) UTF-64
     5) UTF-16

_Answer is 2) UTF-8_

** 10. What is the ASCII character that is associated with the decimal value 42?**

    1) !
    2) *
    3) ^
    4) /
    5) +

_Answer is 2) *_

** 11. What word does the following sequence of numbers represent in ASCII:
108, 105, 110, 101 **

    1) func
    2) tree
    3) lost
    4) line
    5) ping

_Answer is 4) line_

** 12. How are strings stored internally in Python 3?**

    1) EBCDIC
    2) UTF-8
    3) Unicode
    4) ASCII
    5) Byte Code

_Answer is 3) Unicode_

** 13. When reading data across the network (i.e. from a URL) in Python 3, what method must be used to convert it to the internal format used by strings? **

    1) trim()
    2) find()
    3) encode()
    4) decode()
    5) upper()

_Answer is 4) decode()_


================================================
FILE: Course-3/Quizzes/quiz_chapter14.md
================================================
** 1. What is the name of the Python 2.x library to parse XML data?**

    1) xml2
    2) xml.etree.ElementTree
    3) xml.json
    4) xml-misc

_Answer is 2) xml.etree.ElementTree_

** 2. Which of the following are not commonly used serialization formats?**

    1) TCP
    2) XML
    3) JSON
    4) Dictionaries
    5) HTTP

_Answer is 1) TCP, 4) Dictionaries, 5) HTTP_

** 3. In this XML, which are the "complex elements"?**
```XML
<people>
    <person>
       <name>Chuck</name>
       <phone>303 4456</phone>
    </person>
    <person>
       <name>Noah</name>
       <phone>622 7421</phone>
    </person>
</people>
```
    1) Noah
    2) people
    3) person
    4) name
    5) phone

_Answer is 2) people, 3) person_

** 4. In the following XML, which are attributes?**
```XML
<person>
  <name>Chuck</name>
  <phone type="intl">
     +1 734 303 4456
  </phone>
  <email hide="yes" />
</person>
```
    1) hide
    2) name
    3) person
    4) email
    5) type

_Answer is 1) hide, 5) type_

** 5. In the following XML, which node is the parent node of node e**
```XML
<a>
  <b>X</b>
  <c>
    <d>Y</d>
    <e>Z</e>
  </c>
</a>
```
    1) b
    2) a
    3) e
    4) c

_Answer is 4) c_

** 6. Looking at the following XML, what text value would we find at path "/a/c/e"**
```XML
<a>
  <b>X</b>
  <c>
    <d>Y</d>
    <e>Z</e>
  </c>
</a>
```
     1) b
     2) Z
     3) a
     4) e
     5) Y

_Answer is 2) Z_

** 7. What is the purpose of XML Schema?**

    1) To compute SHA1 checksums on data to make sure it is not modified in transit
    2) To establish a contract as to what is valid XML
    3) To transfer XML data reliably during network outages
    4) A Python program to tranform XML files

_Answer is 2) To establish a contract as to what is valid XML_

** 8. If you were building an XML Schema and wanted to limit the values allowed in an xs:string field to only those in a particular list, what XML tag would you use in your XML Schema definition? **

    1) xs:sequence
    2) xs:enumeration
    3) xs:element
    4) xs:complexType
    5) maxOccurs

_Answer is 2) xs:enumeration_

** 9. What does the "Z" mean in this representation of a time:**
``` 2002-05-30T09:30:10Z ```

    1) This time is in the UTC timezone
    2) The hours value is in the range 0-12
    3) The local timezone for this time is New Zealand
    4) This time is Daylight Savings Time

_Answer is 1) This time is in the UTC timezone_

** 10. Which of the following dates is in ISO8601 format?**

    1) May 30, 2002
    2) 05/30/2002
    3) 2002-May-30
    4) 2002-05-30T09:30:10Z

_Answer is 4) 2002-05-30T09:30:10Z_


================================================
FILE: Course-3/Quizzes/quiz_chapter15.md
================================================
** 1. Who is credited with getting the JSON movement started?**

     1) Bjarne Stroustrup
     2) Mitchell Baker
     3) Pooja Sankar
     4) Douglas Crockford
_Answer is 4) Douglas Crockford_

** 2. What Python library do you have to import to parse and handle JSON? **

    1) BeautifulSoup
    2) import re
    3) ElementTree
    4) import json
_Answer is 4) import json_

** 3. What is the method used to parse a string containing JSON data so that you can work with the data in Python?**

    1) json.read()
    2) json.loads()
    3) json.parse()
    4) json.connect()
_Answer is 2) json.loads()_

** 4. What kind of variable will you get in Python when the following JSON is parsed:**
```[ "Glenn", "Sally", "Jen" ]```

    1) A list with three items
    2) A dictionary with three key / value pairs
    3) A dictionary with one key / value pair
    4) Three tuples
    5) One Tuple
_Answer is 1) A list with three items_

** 5. Which of the following is not true about the service-oriented approach?**

    1) An application makes use of the services provided by other applications
    2) Web services and APIs are used to transfer data between applications
    3) Standards are developed where many pairs of applications must work together
    4) An application runs together all in one place
_Answer is 4) An application runs together all in one place_

** 6. Which of these two web service approaches is preferred in most modern service-oriented applications?**

    1) SOAP - Simple Object Access Protocol
    2) REST - Representational state transfer
_Answer is 2) REST - Representational state transfer_

** 7. What library call do you make to append properly encoded parameters to the end of a URL like the following:**
```http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Ann+Arbor%2C+MI```

    1) re.match()
    2) urllib.parse.urlencode()
    3) re.encode()
    4) urllib.urlcat()
_Answer is 2) urllib.parse.urlencode()_

** 8. What happens when you exceed the Google geocoding API rate limit?**

    1) You canot use the API until you respond to an email that contains a survey question
    2) Your application starts to perform very slowly
    3) You cannot use the API for 24 hours
    4) The API starts to perform very slowly
_Answer is 3) You cannot use the API for 24 hours_

** 9. What protocol does Twitter use to protect its API?**

    1) PKI-HMAC
    2) Java Web Tokens
    3) SHA1-MD5
    4) SOAP
    5) OAuth
    6) WS*Security
_Answer is 5) OAuth_

** 10. What header does Twitter use to tell you how many more API requests you can make before you will be rate limited?**

    1) content-type
    2) x-max-requests
    3) x-request-count-down
    4) x-rate-limit-remaining
_Answer is 4) x-rate-limit-remaining_


================================================
FILE: Course-4/Week-2/Quizzes/quiz_chapter16.md
================================================
** 1. What is the most common Unicode encoding when moving data between systems?**

    1) UTF-8
    2) UTF-32
    3) UTF-16
    4) UTF-128
    5) UTF-64

_Answer is 1) UTF-8_

** 2. What is the decimal (Base-10) numeric value for the upper case letter "G" in the ASCII character set?**

    1) 256
    2) 17
    3) 142
    4) 7
    5) 71

_Answer is 5) 71_

** 3. What word does the following sequence of numbers represent in ASCII:**

``` 108, 105, 115, 116```

    1) first
    2) dict
    3) list
    4) mist
    5) webs

_Answer is 3) list_

** 4. How are strings stored internally in Python 3?**

    1) UTF-16
    2) EBCDIC
    3) inverted
    4) Unicode
    5) bubble memory

_Answer is 4) Unicode_

** 5. When reading data across the network (i.e. from a URL) in Python 3, what method must be used to convert it to the internal format used by strings?**

    1) encode()
    2) rstrip()
    3) split()
    4) decode()
    5) internal()

_Answer is 4) decode()_


================================================
FILE: Course-4/Week-2/Quizzes/week1- quizz1.md
================================================

** 1. Which came first, the instance or the class?**

     1) class
     2) function
     3) instance
     4) method

_Answer is 1) class_

** 2. In Object Oriented Programming, what is another name for the "attributes" of an object?**

    1) fields
    2) forms
    3) methods
    4) portions
    5) messages

_Answer is 1) fields_

** 3. At the moment of creation of a new object, Python looks at the _________ definition to define the structure and capabilities of the newly created object.**

    1) cache
    2) method
    3) class
    4) instance
    5) constructor

_Answer is 3) class_

** 4. Which of the following is NOT a good synonym for "class" in Python?**

    1) template
    2) blueprint
    3) pattern
    4) direction

_Answer is 4) direction_

** 5. What does this Python statement do if PartyAnimal is a class?**
```  zap = PartyAnimal() ```

     1) Subtract the value of the zap variable from the value in the PartyAnimal variable and put the difference in zap
     2) Use the PartyAnimal template to make a new object and assign it to zap
     3) Copy the value from the PartyAnimal variable to the variable zap
     4) Clear out all the data in the PartyAnimal variable and put the old values for the data in zap

_Answer is 2) Use the PartyAnimal template to make a new object and assign it to zap_

** 6. What is the syntax to look up the fullname attribute in an object stored in the variable colleen?**

    1) colleen->fullname
    2) colleen::fullname
    3) colleen.fullname
    4) colleen['fullname']

_Answer is 3) colleen.fullname_

** 7. Which of these statements is used to indicate that class A will inherit all the features of class B?**

    1) class A extends B :
    2) A=B++;
    3) class A instanceOf B :
    4) class A inherits B :
    5) class A(B) :

_Answer is 5) class A(B) :_

** 8. What keyword is used to indicate the start of a method in a Python class?**

    1) continue
    2) def
    3) break
    4) function

_Answer is 2) def_

** 9. What is "self" typically used for in a Python method within a class?**

    1) The number of parameters to the method
    2) To terminate a loop
    3) To set the residual value in an expression where the method is used
    4) To refer to the instance in which the method is being called

_Answer is 4) To refer to the instance in which the method is being called_

** 10. What does the Python dir() function show when we pass an object into it as a parameter?**

    1) It shows the methods and attributes of the object
    2) It shows the number of parameters to the constructor
    3) It shows the type of the object
    4) It shows the parent class

_Answer is 1) It shows the methods and attributes of the object_

** 11. Which of the following is rarely used in Object Oriented Programming?**

    1) Constructor
    2) Destructor
    3) Method
    4) Attribute

_Answer is 2) Destructor_


================================================
FILE: Course-4/Week-2/Quizzes/week2- quizz1.md
================================================
** 1. Structured Query Language (SQL) is used to (check all that apply)**

     1) Insert data
     2) Check Python code for errors
     3) Create a table
     4) Delete data

_Answer is 1, 3, and 4_

** 2. Which of these is the right syntax to make a new table?**

     1) MAKE DATASET people;
     2) CREATE people;
     3) CREATE TABLE people;
     4) MAKE people;

_Answer is 3) CREATE TABLE people;_

** 3. Which SQL command is used to insert a new row into a table?**

     1) INSERT AFTER
     2) INSERT INTO
     3) ADD ROW
     4) INSERT ROW

_Answer is 2) INSERT INTO_

** Which command is used to retrieve all records from a table?**

    1) SELECT * FROM Users
    2) RETRIEVE all FROM User
    3) SELECT all FROM Users
    4) RETRIEVE * FROM Users

_Answer is 1) SELECT * FROM Users_

** 5. Which keyword will cause the results of the query to be displayed in sorted order?**

     1) GROUP BY
     2) ORDER BY
     3) WHERE
     4) None of these

_Answer is 2) ORDER BY_

** 6. In database terminology, another word for table is**

    1) field
    2) attribute
    3) relation
    4) row

_Answer is 3) relation_

** 7. In a typical online production environment, who has direct access to the production database?**

    1) Database Administrator
    2) UI/UX Designer
    3) Project Manager
    4) Developer

_Answer is 1) Database Administrator_

** 8. Which of the following is the database software used in this class?**

     1) Postgres
     2) Oracle
     3) MySQL
     4) SQL Server
     5) SQLite

_Answer is 5) SQLite_

** 9. What happens if a DELETE command is run on a table without a WHERE clause?**

    1) It is a syntax error
    2) All the rows without a primary key will be deleted
    3) All the rows in the table are deleted
    4) The first row of the table will be deleted

_Answer is 3) All the rows in the table are deleted_

** 10. Which of the following commands would update a column named "name" in a table named "Users"?**

    1) Users->name = 'new name' WHERE ...
    2) Users.name='new name' WHERE ...
    3) UPDATE Users (name) VALUES ('new name') WHERE ...
    4) UPDATE Users SET name='new name' WHERE ...

_Answer is 4) UPDATE Users SET name='new name' WHERE ..._

** 11. What does this SQL command do?

```SELECT COUNT(*) FROM Users```

Hint: This is not from the lecture

    1) It is a syntax errror
    2) It only retrieves the rows of Users if there are at least two rows
    3) It counts the rows in the table Users
    4) It adds a COUNT column to the Users table

_Answer is 3) It counts the rows in the table Users_


================================================
FILE: Course-4/Week-2/assignments/assignment.py
================================================
import sqlite3

conn = sqlite3.connect('emaildb.sqlite')
cur = conn.cursor()

cur.execute('DROP TABLE IF EXISTS Counts')

cur.execute('''
CREATE TABLE Counts (org TEXT, count INTEGER)''')

fname = input('Enter file name: ')
if (len(fname) < 1): fname = 'mbox-short.txt'
fh = open(fname)
for line in fh:
    if not line.startswith('From: '): continue
    pieces = line.split()
    email = pieces[1]
    (emailname, organization) = email.split('@')
    cur.execute('SELECT count FROM Counts WHERE org = ? ', (organization,))
    row = cur.fetchone()
    if row is None:
        cur.execute('''INSERT INTO Counts (org, count)
                VALUES (?, 1)''', (organization,))
    else:
        cur.execute('UPDATE Counts SET count = count + 1 WHERE org = ?',
                    (organization,))
    conn.commit()

# https://www.sqlite.org/lang_select.html
sqlstr = 'SELECT org, count FROM Counts ORDER BY count DESC LIMIT 10'

for row in cur.execute(sqlstr):
    print(str(row[0]), row[1])

cur.close()


================================================
FILE: Course-4/Week-2/assignments/mbox.txt
================================================
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.90])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Sat, 05 Jan 2008 09:14:16 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Sat, 05 Jan 2008 09:14:16 -0500
Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79])
	by flawless.mail.umich.edu () with ESMTP id m05EEFR1013674;
	Sat, 5 Jan 2008 09:14:15 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY holes.mr.itd.umich.edu ID 477F90B0.2DB2F.12494 ; 
	 5 Jan 2008 09:14:10 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 5F919BC2F2;
	Sat,  5 Jan 2008 14:10:05 +0000 (GMT)
Message-ID: <200801051412.m05ECIaH010327@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 899
          for <source@collab.sakaiproject.org>;
          Sat, 5 Jan 2008 14:09:50 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id A215243002
	for <source@collab.sakaiproject.org>; Sat,  5 Jan 2008 14:13:33 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m05ECJVp010329
	for <source@collab.sakaiproject.org>; Sat, 5 Jan 2008 09:12:19 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m05ECIaH010327
	for source@collab.sakaiproject.org; Sat, 5 Jan 2008 09:12:18 -0500
Date: Sat, 5 Jan 2008 09:12:18 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to stephen.marquard@uct.ac.za using -f
To: source@collab.sakaiproject.org
From: stephen.marquard@uct.ac.za
Subject: [sakai] svn commit: r39772 - content/branches/sakai_2-5-x/content-impl/impl/src/java/org/sakaiproject/content/impl
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Sat Jan  5 09:14:16 2008
X-DSPAM-Confidence: 0.8475
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39772

Author: stephen.marquard@uct.ac.za
Date: 2008-01-05 09:12:07 -0500 (Sat, 05 Jan 2008)
New Revision: 39772

Modified:
content/branches/sakai_2-5-x/content-impl/impl/src/java/org/sakaiproject/content/impl/ContentServiceSqlOracle.java
content/branches/sakai_2-5-x/content-impl/impl/src/java/org/sakaiproject/content/impl/DbContentService.java
Log:
SAK-12501 merge to 2-5-x: r39622, r39624:5, r39632:3 (resolve conflict from differing linebreaks for r39622)

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.97])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 18:10:48 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 18:10:48 -0500
Received: from icestorm.mr.itd.umich.edu (icestorm.mr.itd.umich.edu [141.211.93.149])
	by sleepers.mail.umich.edu () with ESMTP id m04NAbGa029441;
	Fri, 4 Jan 2008 18:10:37 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY icestorm.mr.itd.umich.edu ID 477EBCE3.161BB.4320 ; 
	 4 Jan 2008 18:10:31 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 07969BB706;
	Fri,  4 Jan 2008 23:10:33 +0000 (GMT)
Message-ID: <200801042308.m04N8v6O008125@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 710
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 23:10:10 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 4BA2F42F57
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 23:10:10 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04N8vHG008127
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 18:08:57 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04N8v6O008125
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 18:08:57 -0500
Date: Fri, 4 Jan 2008 18:08:57 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to louis@media.berkeley.edu using -f
To: source@collab.sakaiproject.org
From: louis@media.berkeley.edu
Subject: [sakai] svn commit: r39771 - in bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src: bundle java/org/sakaiproject/site/tool
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 18:10:48 2008
X-DSPAM-Confidence: 0.6178
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39771

Author: louis@media.berkeley.edu
Date: 2008-01-04 18:08:50 -0500 (Fri, 04 Jan 2008)
New Revision: 39771

Modified:
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/bundle/sitesetupgeneric.properties
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java
Log:
BSP-1415 New (Guest) user Notification

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From zqian@umich.edu Fri Jan  4 16:10:39 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.25])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 16:10:39 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 16:10:39 -0500
Received: from ghostbusters.mr.itd.umich.edu (ghostbusters.mr.itd.umich.edu [141.211.93.144])
	by panther.mail.umich.edu () with ESMTP id m04LAcZw014275;
	Fri, 4 Jan 2008 16:10:38 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY ghostbusters.mr.itd.umich.edu ID 477EA0C6.A0214.25480 ; 
	 4 Jan 2008 16:10:33 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id C48CDBB490;
	Fri,  4 Jan 2008 21:10:31 +0000 (GMT)
Message-ID: <200801042109.m04L92hb007923@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 906
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 21:10:18 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 7D13042F71
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 21:10:14 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04L927E007925
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 16:09:02 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04L92hb007923
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 16:09:02 -0500
Date: Fri, 4 Jan 2008 16:09:02 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f
To: source@collab.sakaiproject.org
From: zqian@umich.edu
Subject: [sakai] svn commit: r39770 - site-manage/branches/sakai_2-5-x/site-manage-tool/tool/src/webapp/vm/sitesetup
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 16:10:39 2008
X-DSPAM-Confidence: 0.6961
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39770

Author: zqian@umich.edu
Date: 2008-01-04 16:09:01 -0500 (Fri, 04 Jan 2008)
New Revision: 39770

Modified:
site-manage/branches/sakai_2-5-x/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-siteInfo-list.vm
Log:
merge fix to SAK-9996 into 2-5-x branch: svn merge -r 39687:39688 https://source.sakaiproject.org/svn/site-manage/trunk/

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From rjlowe@iupui.edu Fri Jan  4 15:46:24 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.25])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 15:46:24 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 15:46:24 -0500
Received: from dreamcatcher.mr.itd.umich.edu (dreamcatcher.mr.itd.umich.edu [141.211.14.43])
	by panther.mail.umich.edu () with ESMTP id m04KkNbx032077;
	Fri, 4 Jan 2008 15:46:23 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY dreamcatcher.mr.itd.umich.edu ID 477E9B13.2F3BC.22965 ; 
	 4 Jan 2008 15:46:13 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 4AE03BB552;
	Fri,  4 Jan 2008 20:46:13 +0000 (GMT)
Message-ID: <200801042044.m04Kiem3007881@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 38
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 20:45:56 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id A55D242F57
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 20:45:52 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04KieqE007883
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 15:44:40 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04Kiem3007881
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 15:44:40 -0500
Date: Fri, 4 Jan 2008 15:44:40 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to rjlowe@iupui.edu using -f
To: source@collab.sakaiproject.org
From: rjlowe@iupui.edu
Subject: [sakai] svn commit: r39769 - in gradebook/trunk/app/ui/src: java/org/sakaiproject/tool/gradebook/ui/helpers/beans java/org/sakaiproject/tool/gradebook/ui/helpers/producers webapp/WEB-INF webapp/WEB-INF/bundle
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 15:46:24 2008
X-DSPAM-Confidence: 0.7565
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39769

Author: rjlowe@iupui.edu
Date: 2008-01-04 15:44:39 -0500 (Fri, 04 Jan 2008)
New Revision: 39769

Modified:
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/AssignmentGradeRecordBean.java
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers/GradeGradebookItemProducer.java
gradebook/trunk/app/ui/src/webapp/WEB-INF/applicationContext.xml
gradebook/trunk/app/ui/src/webapp/WEB-INF/bundle/messages.properties
gradebook/trunk/app/ui/src/webapp/WEB-INF/requestContext.xml
Log:
SAK-12180 - Fixed errors with grading helper

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From zqian@umich.edu Fri Jan  4 15:03:18 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.46])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 15:03:18 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 15:03:18 -0500
Received: from firestarter.mr.itd.umich.edu (firestarter.mr.itd.umich.edu [141.211.14.83])
	by fan.mail.umich.edu () with ESMTP id m04K3HGF006563;
	Fri, 4 Jan 2008 15:03:17 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY firestarter.mr.itd.umich.edu ID 477E9100.8F7F4.1590 ; 
	 4 Jan 2008 15:03:15 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 57770BB477;
	Fri,  4 Jan 2008 20:03:09 +0000 (GMT)
Message-ID: <200801042001.m04K1cO0007738@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 622
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 20:02:46 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id AB4D042F4D
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 20:02:50 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04K1cXv007740
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 15:01:38 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04K1cO0007738
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 15:01:38 -0500
Date: Fri, 4 Jan 2008 15:01:38 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f
To: source@collab.sakaiproject.org
From: zqian@umich.edu
Subject: [sakai] svn commit: r39766 - site-manage/branches/sakai_2-4-x/site-manage-tool/tool/src/java/org/sakaiproject/site/tool
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 15:03:18 2008
X-DSPAM-Confidence: 0.7626
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39766

Author: zqian@umich.edu
Date: 2008-01-04 15:01:37 -0500 (Fri, 04 Jan 2008)
New Revision: 39766

Modified:
site-manage/branches/sakai_2-4-x/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java
Log:
merge fix to SAK-10788 into site-manage 2.4.x branch:

Sakai Source Repository  	#38024  	Wed Nov 07 14:54:46 MST 2007  	zqian@umich.edu  	 Fix to SAK-10788: If a provided id in a couse site is fake or doesn't provide any user information, Site Info appears to be like project site with empty participant list

Watch for enrollments object being null and concatenate provider ids when there are more than one.
Files Changed
MODIFY /site-manage/trunk/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java 




----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From rjlowe@iupui.edu Fri Jan  4 14:50:18 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.93])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 14:50:18 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 14:50:18 -0500
Received: from eyewitness.mr.itd.umich.edu (eyewitness.mr.itd.umich.edu [141.211.93.142])
	by mission.mail.umich.edu () with ESMTP id m04JoHJi019755;
	Fri, 4 Jan 2008 14:50:17 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY eyewitness.mr.itd.umich.edu ID 477E8DF2.67B91.5278 ; 
	 4 Jan 2008 14:50:13 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 2D1B9BB492;
	Fri,  4 Jan 2008 19:47:10 +0000 (GMT)
Message-ID: <200801041948.m04JmdwO007705@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 960
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 19:46:50 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id B3E6742F4A
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 19:49:51 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04JmeV9007707
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 14:48:40 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04JmdwO007705
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 14:48:39 -0500
Date: Fri, 4 Jan 2008 14:48:39 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to rjlowe@iupui.edu using -f
To: source@collab.sakaiproject.org
From: rjlowe@iupui.edu
Subject: [sakai] svn commit: r39765 - in gradebook/trunk/app: business/src/java/org/sakaiproject/tool/gradebook/business business/src/java/org/sakaiproject/tool/gradebook/business/impl ui ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/entity ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/params ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers ui/src/webapp/WEB-INF ui/src/webapp/WEB-INF/bundle ui/src/webapp/content/templates
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 14:50:18 2008
X-DSPAM-Confidence: 0.7556
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39765

Author: rjlowe@iupui.edu
Date: 2008-01-04 14:48:37 -0500 (Fri, 04 Jan 2008)
New Revision: 39765

Added:
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/AssignmentGradeRecordBean.java
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/AssignmentGradeRecordCreator.java
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/entity/GradebookEntryGradeEntityProvider.java
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/params/GradeGradebookItemViewParams.java
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers/GradeGradebookItemProducer.java
gradebook/trunk/app/ui/src/webapp/content/templates/grade-gradebook-item.html
Modified:
gradebook/trunk/app/business/src/java/org/sakaiproject/tool/gradebook/business/GradebookManager.java
gradebook/trunk/app/business/src/java/org/sakaiproject/tool/gradebook/business/impl/GradebookManagerHibernateImpl.java
gradebook/trunk/app/ui/pom.xml
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/GradebookItemBean.java
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/entity/GradebookEntryEntityProvider.java
gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers/AddGradebookItemProducer.java
gradebook/trunk/app/ui/src/webapp/WEB-INF/applicationContext.xml
gradebook/trunk/app/ui/src/webapp/WEB-INF/bundle/messages.properties
gradebook/trunk/app/ui/src/webapp/WEB-INF/requestContext.xml
Log:
SAK-12180 - New helper tool to grade an assignment

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From cwen@iupui.edu Fri Jan  4 11:37:30 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.46])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 11:37:30 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 11:37:30 -0500
Received: from tadpole.mr.itd.umich.edu (tadpole.mr.itd.umich.edu [141.211.14.72])
	by fan.mail.umich.edu () with ESMTP id m04GbT9x022078;
	Fri, 4 Jan 2008 11:37:29 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY tadpole.mr.itd.umich.edu ID 477E60B2.82756.9904 ; 
	 4 Jan 2008 11:37:09 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 8D13DBB001;
	Fri,  4 Jan 2008 16:37:07 +0000 (GMT)
Message-ID: <200801041635.m04GZQGZ007313@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 120
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 16:36:40 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id D430B42E42
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 16:36:37 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GZQ7W007315
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 11:35:26 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GZQGZ007313
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:35:26 -0500
Date: Fri, 4 Jan 2008 11:35:26 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f
To: source@collab.sakaiproject.org
From: cwen@iupui.edu
Subject: [sakai] svn commit: r39764 - in msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums: . ui
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 11:37:30 2008
X-DSPAM-Confidence: 0.7002
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39764

Author: cwen@iupui.edu
Date: 2008-01-04 11:35:25 -0500 (Fri, 04 Jan 2008)
New Revision: 39764

Modified:
msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java
msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/ui/PrivateMessageDecoratedBean.java
Log:
unmerge Xingtang's checkin for SAK-12488.

svn merge -r39558:39557 https://source.sakaiproject.org/svn/msgcntr/trunk
U    messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java
U    messageforums-app/src/java/org/sakaiproject/tool/messageforums/ui/PrivateMessageDecoratedBean.java

svn log -r 39558
------------------------------------------------------------------------
r39558 | hu2@iupui.edu | 2007-12-20 15:25:38 -0500 (Thu, 20 Dec 2007) | 3 lines

SAK-12488
when send a message to yourself. click reply to all, cc row should be null.
http://jira.sakaiproject.org/jira/browse/SAK-12488
------------------------------------------------------------------------


----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From cwen@iupui.edu Fri Jan  4 11:35:08 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.46])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 11:35:08 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 11:35:08 -0500
Received: from it.mr.itd.umich.edu (it.mr.itd.umich.edu [141.211.93.151])
	by fan.mail.umich.edu () with ESMTP id m04GZ6lt020480;
	Fri, 4 Jan 2008 11:35:06 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY it.mr.itd.umich.edu ID 477E6033.6469D.21870 ; 
	 4 Jan 2008 11:35:02 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id E40FABAE5B;
	Fri,  4 Jan 2008 16:34:38 +0000 (GMT)
Message-ID: <200801041633.m04GX6eG007292@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 697
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 16:34:01 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 1CD0C42E42
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 16:34:17 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GX6Y3007294
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 11:33:06 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GX6eG007292
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:33:06 -0500
Date: Fri, 4 Jan 2008 11:33:06 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f
To: source@collab.sakaiproject.org
From: cwen@iupui.edu
Subject: [sakai] svn commit: r39763 - in msgcntr/trunk: messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle messageforums-app/src/java/org/sakaiproject/tool/messageforums
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 11:35:08 2008
X-DSPAM-Confidence: 0.7615
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39763

Author: cwen@iupui.edu
Date: 2008-01-04 11:33:05 -0500 (Fri, 04 Jan 2008)
New Revision: 39763

Modified:
msgcntr/trunk/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages.properties
msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java
Log:
unmerge Xingtang's check in for SAK-12484.

svn merge -r39571:39570 https://source.sakaiproject.org/svn/msgcntr/trunk
U    messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages.properties
U    messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java

svn log -r 39571
------------------------------------------------------------------------
r39571 | hu2@iupui.edu | 2007-12-20 21:26:28 -0500 (Thu, 20 Dec 2007) | 3 lines

SAK-12484
reply all cc list should not include the current user name.
http://jira.sakaiproject.org/jira/browse/SAK-12484
------------------------------------------------------------------------


----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From gsilver@umich.edu Fri Jan  4 11:12:37 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.25])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 11:12:37 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 11:12:37 -0500
Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79])
	by panther.mail.umich.edu () with ESMTP id m04GCaHB030887;
	Fri, 4 Jan 2008 11:12:36 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY holes.mr.itd.umich.edu ID 477E5AEB.E670B.28397 ; 
	 4 Jan 2008 11:12:30 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 99715BAE7D;
	Fri,  4 Jan 2008 16:12:27 +0000 (GMT)
Message-ID: <200801041611.m04GB1Lb007221@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 272
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 16:12:14 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 0A6ED42DFC
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 16:12:12 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GB1Wt007223
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 11:11:01 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GB1Lb007221
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:11:01 -0500
Date: Fri, 4 Jan 2008 11:11:01 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gsilver@umich.edu using -f
To: source@collab.sakaiproject.org
From: gsilver@umich.edu
Subject: [sakai] svn commit: r39762 - web/trunk/web-tool/tool/src/bundle
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 11:12:37 2008
X-DSPAM-Confidence: 0.7601
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39762

Author: gsilver@umich.edu
Date: 2008-01-04 11:11:00 -0500 (Fri, 04 Jan 2008)
New Revision: 39762

Modified:
web/trunk/web-tool/tool/src/bundle/iframe.properties
Log:
SAK-12596
http://bugs.sakaiproject.org/jira/browse/SAK-12596
- left moot (unused) entries commented for now

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From gsilver@umich.edu Fri Jan  4 11:11:52 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.36])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 11:11:52 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 11:11:52 -0500
Received: from creepshow.mr.itd.umich.edu (creepshow.mr.itd.umich.edu [141.211.14.84])
	by godsend.mail.umich.edu () with ESMTP id m04GBqqv025330;
	Fri, 4 Jan 2008 11:11:52 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY creepshow.mr.itd.umich.edu ID 477E5AB3.5CC32.30840 ; 
	 4 Jan 2008 11:11:34 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 62AA4BAE46;
	Fri,  4 Jan 2008 16:11:31 +0000 (GMT)
Message-ID: <200801041610.m04GA5KP007209@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 1006
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 16:11:18 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id C596A3DFA2
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 16:11:16 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GA5LR007211
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 11:10:05 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GA5KP007209
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:10:05 -0500
Date: Fri, 4 Jan 2008 11:10:05 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gsilver@umich.edu using -f
To: source@collab.sakaiproject.org
From: gsilver@umich.edu
Subject: [sakai] svn commit: r39761 - site/trunk/site-tool/tool/src/bundle
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 11:11:52 2008
X-DSPAM-Confidence: 0.7605
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39761

Author: gsilver@umich.edu
Date: 2008-01-04 11:10:04 -0500 (Fri, 04 Jan 2008)
New Revision: 39761

Modified:
site/trunk/site-tool/tool/src/bundle/admin.properties
Log:
SAK-12595
http://bugs.sakaiproject.org/jira/browse/SAK-12595
- left moot (unused) entries commented for now

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From zqian@umich.edu Fri Jan  4 11:11:03 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.97])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 11:11:03 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 11:11:03 -0500
Received: from carrie.mr.itd.umich.edu (carrie.mr.itd.umich.edu [141.211.93.152])
	by sleepers.mail.umich.edu () with ESMTP id m04GB3Vg011502;
	Fri, 4 Jan 2008 11:11:03 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY carrie.mr.itd.umich.edu ID 477E5A8D.B378F.24200 ; 
	 4 Jan 2008 11:10:56 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id C7251BAD44;
	Fri,  4 Jan 2008 16:10:53 +0000 (GMT)
Message-ID: <200801041609.m04G9EuX007197@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 483
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 16:10:27 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 2E7043DFA2
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 16:10:26 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04G9Eqg007199
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 11:09:15 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04G9EuX007197
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:09:14 -0500
Date: Fri, 4 Jan 2008 11:09:14 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f
To: source@collab.sakaiproject.org
From: zqian@umich.edu
Subject: [sakai] svn commit: r39760 - in site-manage/trunk/site-manage-tool/tool/src: java/org/sakaiproject/site/tool webapp/vm/sitesetup
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 11:11:03 2008
X-DSPAM-Confidence: 0.6959
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39760

Author: zqian@umich.edu
Date: 2008-01-04 11:09:12 -0500 (Fri, 04 Jan 2008)
New Revision: 39760

Modified:
site-manage/trunk/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java
site-manage/trunk/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-siteInfo-list.vm
Log:
fix to SAK-10911: Refactor use of site.upd, site.upd.site.mbrship and site.upd.grp.mbrship permissions

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From gsilver@umich.edu Fri Jan  4 11:10:22 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.39])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 11:10:22 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 11:10:22 -0500
Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79])
	by faithful.mail.umich.edu () with ESMTP id m04GAL9k010604;
	Fri, 4 Jan 2008 11:10:21 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY holes.mr.itd.umich.edu ID 477E5A67.34350.23015 ; 
	 4 Jan 2008 11:10:18 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 98D04BAD43;
	Fri,  4 Jan 2008 16:10:11 +0000 (GMT)
Message-ID: <200801041608.m04G8d7w007184@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 966
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 16:09:51 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 9F89542DD0
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 16:09:50 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04G8dXN007186
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 11:08:39 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04G8d7w007184
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:08:39 -0500
Date: Fri, 4 Jan 2008 11:08:39 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gsilver@umich.edu using -f
To: source@collab.sakaiproject.org
From: gsilver@umich.edu
Subject: [sakai] svn commit: r39759 - mailarchive/trunk/mailarchive-tool/tool/src/bundle
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 11:10:22 2008
X-DSPAM-Confidence: 0.7606
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39759

Author: gsilver@umich.edu
Date: 2008-01-04 11:08:38 -0500 (Fri, 04 Jan 2008)
New Revision: 39759

Modified:
mailarchive/trunk/mailarchive-tool/tool/src/bundle/email.properties
Log:
SAK-12592
http://bugs.sakaiproject.org/jira/browse/SAK-12592
- left moot (unused) entries commented for now

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From wagnermr@iupui.edu Fri Jan  4 10:38:42 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.90])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 10:38:42 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 10:38:42 -0500
Received: from shining.mr.itd.umich.edu (shining.mr.itd.umich.edu [141.211.93.153])
	by flawless.mail.umich.edu () with ESMTP id m04Fcfjm012313;
	Fri, 4 Jan 2008 10:38:41 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY shining.mr.itd.umich.edu ID 477E52FA.E6C6E.24093 ; 
	 4 Jan 2008 10:38:37 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 6A39594CD2;
	Fri,  4 Jan 2008 15:37:36 +0000 (GMT)
Message-ID: <200801041537.m04Fb6Ci007092@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 690
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 15:37:21 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id CEFA037ACE
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 15:38:17 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04Fb6nh007094
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 10:37:06 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04Fb6Ci007092
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 10:37:06 -0500
Date: Fri, 4 Jan 2008 10:37:06 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to wagnermr@iupui.edu using -f
To: source@collab.sakaiproject.org
From: wagnermr@iupui.edu
Subject: [sakai] svn commit: r39758 - in gradebook/trunk: app/business/src/java/org/sakaiproject/tool/gradebook/business/impl service/api/src/java/org/sakaiproject/service/gradebook/shared service/impl/src/java/org/sakaiproject/component/gradebook
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 10:38:42 2008
X-DSPAM-Confidence: 0.7559
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39758

Author: wagnermr@iupui.edu
Date: 2008-01-04 10:37:04 -0500 (Fri, 04 Jan 2008)
New Revision: 39758

Modified:
gradebook/trunk/app/business/src/java/org/sakaiproject/tool/gradebook/business/impl/GradebookManagerHibernateImpl.java
gradebook/trunk/service/api/src/java/org/sakaiproject/service/gradebook/shared/GradebookService.java
gradebook/trunk/service/impl/src/java/org/sakaiproject/component/gradebook/GradebookServiceHibernateImpl.java
Log:
SAK-12175
http://bugs.sakaiproject.org/jira/browse/SAK-12175
Create methods required for gb integration with the Assignment2 tool
getGradeDefinitionForStudentForItem

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From zqian@umich.edu Fri Jan  4 10:17:43 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.97])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 10:17:43 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 10:17:42 -0500
Received: from creepshow.mr.itd.umich.edu (creepshow.mr.itd.umich.edu [141.211.14.84])
	by sleepers.mail.umich.edu () with ESMTP id m04FHgfs011536;
	Fri, 4 Jan 2008 10:17:42 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY creepshow.mr.itd.umich.edu ID 477E4E0F.CCA4B.926 ; 
	 4 Jan 2008 10:17:38 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id BD02DBAC64;
	Fri,  4 Jan 2008 15:17:34 +0000 (GMT)
Message-ID: <200801041515.m04FFv42007050@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 25
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 15:17:11 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 5B396236B9
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 15:17:08 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04FFv85007052
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 10:15:57 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04FFv42007050
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 10:15:57 -0500
Date: Fri, 4 Jan 2008 10:15:57 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f
To: source@collab.sakaiproject.org
From: zqian@umich.edu
Subject: [sakai] svn commit: r39757 - in assignment/trunk: assignment-impl/impl/src/java/org/sakaiproject/assignment/impl assignment-tool/tool/src/webapp/vm/assignment
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 10:17:42 2008
X-DSPAM-Confidence: 0.7605
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39757

Author: zqian@umich.edu
Date: 2008-01-04 10:15:54 -0500 (Fri, 04 Jan 2008)
New Revision: 39757

Modified:
assignment/trunk/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/BaseAssignmentService.java
assignment/trunk/assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_instructor_list_submissions.vm
Log:
fix to SAK-12604:Don't show groups/sections filter if the site doesn't have any

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From antranig@caret.cam.ac.uk Fri Jan  4 10:04:14 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.25])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 10:04:14 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 10:04:14 -0500
Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79])
	by panther.mail.umich.edu () with ESMTP id m04F4Dci015108;
	Fri, 4 Jan 2008 10:04:13 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY holes.mr.itd.umich.edu ID 477E4AE3.D7AF.31669 ; 
	 4 Jan 2008 10:04:05 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 933E3BAC17;
	Fri,  4 Jan 2008 15:04:00 +0000 (GMT)
Message-ID: <200801041502.m04F21Jo007031@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 32
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 15:03:15 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id AC2F6236B9
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 15:03:12 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04F21hn007033
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 10:02:01 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04F21Jo007031
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 10:02:01 -0500
Date: Fri, 4 Jan 2008 10:02:01 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to antranig@caret.cam.ac.uk using -f
To: source@collab.sakaiproject.org
From: antranig@caret.cam.ac.uk
Subject: [sakai] svn commit: r39756 - in component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component: impl impl/spring/support impl/spring/support/dynamic impl/support util
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 10:04:14 2008
X-DSPAM-Confidence: 0.6932
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39756

Author: antranig@caret.cam.ac.uk
Date: 2008-01-04 10:01:40 -0500 (Fri, 04 Jan 2008)
New Revision: 39756

Added:
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/spring/support/dynamic/
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/spring/support/dynamic/DynamicComponentManager.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/DynamicComponentRecord.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/DynamicJARManager.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/JARRecord.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/ByteToCharBase64.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/FileUtil.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/RecordFileIO.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/RecordReader.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/RecordWriter.java
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/StreamDigestor.java
Modified:
component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/spring/support/ComponentsLoaderImpl.java
Log:
Temporary commit of incomplete work on JAR caching

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From gopal.ramasammycook@gmail.com Fri Jan  4 09:05:31 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.90])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 09:05:31 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 09:05:31 -0500
Received: from guys.mr.itd.umich.edu (guys.mr.itd.umich.edu [141.211.14.76])
	by flawless.mail.umich.edu () with ESMTP id m04E5U3C029277;
	Fri, 4 Jan 2008 09:05:30 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY guys.mr.itd.umich.edu ID 477E3D23.EE2E7.5237 ; 
	 4 Jan 2008 09:05:26 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 33C7856DC0;
	Fri,  4 Jan 2008 14:05:26 +0000 (GMT)
Message-ID: <200801041403.m04E3psW006926@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 575
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 14:05:04 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 3C0261D617
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 14:05:03 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04E3pQS006928
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 09:03:52 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04E3psW006926
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 09:03:51 -0500
Date: Fri, 4 Jan 2008 09:03:51 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gopal.ramasammycook@gmail.com using -f
To: source@collab.sakaiproject.org
From: gopal.ramasammycook@gmail.com
Subject: [sakai] svn commit: r39755 - in sam/branches/SAK-12065: samigo-api/src/java/org/sakaiproject/tool/assessment/shared/api/grading samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/evaluation samigo-services/src/java/org/sakaiproject/tool/assessment/facade samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/ifc samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/integrated samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/standalone samigo-services/src/java/org/sakaiproject/tool/assessment/shared/impl/grading
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 09:05:31 2008
X-DSPAM-Confidence: 0.7558
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39755

Author: gopal.ramasammycook@gmail.com
Date: 2008-01-04 09:02:54 -0500 (Fri, 04 Jan 2008)
New Revision: 39755

Modified:
sam/branches/SAK-12065/samigo-api/src/java/org/sakaiproject/tool/assessment/shared/api/grading/GradingSectionAwareServiceAPI.java
sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation/QuestionScoresBean.java
sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation/SubmissionStatusBean.java
sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation/TotalScoresBean.java
sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/evaluation/SubmissionStatusListener.java
sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/facade/PublishedAssessmentFacadeQueries.java
sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/facade/PublishedAssessmentFacadeQueriesAPI.java
sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/ifc/SectionAwareServiceHelper.java
sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/integrated/SectionAwareServiceHelperImpl.java
sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/standalone/SectionAwareServiceHelperImpl.java
sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/shared/impl/grading/GradingSectionAwareServiceImpl.java
Log:
SAK-12065 Gopal - Samigo Group Release. SubmissionStatus/TotalScores/Questions View filter.

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From david.horwitz@uct.ac.za Fri Jan  4 07:02:32 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.39])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 07:02:32 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 07:02:32 -0500
Received: from guys.mr.itd.umich.edu (guys.mr.itd.umich.edu [141.211.14.76])
	by faithful.mail.umich.edu () with ESMTP id m04C2VN7026678;
	Fri, 4 Jan 2008 07:02:31 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY guys.mr.itd.umich.edu ID 477E2050.C2599.3263 ; 
	 4 Jan 2008 07:02:27 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 6497FBA906;
	Fri,  4 Jan 2008 12:02:11 +0000 (GMT)
Message-ID: <200801041200.m04C0gfK006793@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 611
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 12:01:53 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 5296342D3C
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 12:01:53 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04C0gnm006795
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 07:00:42 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04C0gfK006793
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 07:00:42 -0500
Date: Fri, 4 Jan 2008 07:00:42 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f
To: source@collab.sakaiproject.org
From: david.horwitz@uct.ac.za
Subject: [sakai] svn commit: r39754 - in polls/branches/sakai_2-5-x: . tool tool/src/java/org/sakaiproject/poll/tool tool/src/java/org/sakaiproject/poll/tool/evolvers tool/src/webapp/WEB-INF
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 07:02:32 2008
X-DSPAM-Confidence: 0.6526
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39754

Author: david.horwitz@uct.ac.za
Date: 2008-01-04 07:00:10 -0500 (Fri, 04 Jan 2008)
New Revision: 39754

Added:
polls/branches/sakai_2-5-x/tool/src/java/org/sakaiproject/poll/tool/evolvers/
polls/branches/sakai_2-5-x/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java
Removed:
polls/branches/sakai_2-5-x/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java
Modified:
polls/branches/sakai_2-5-x/.classpath
polls/branches/sakai_2-5-x/tool/pom.xml
polls/branches/sakai_2-5-x/tool/src/webapp/WEB-INF/requestContext.xml
Log:
svn log -r39753 https://source.sakaiproject.org/svn/polls/trunk
------------------------------------------------------------------------
r39753 | david.horwitz@uct.ac.za | 2008-01-04 13:05:51 +0200 (Fri, 04 Jan 2008) | 1 line

SAK-12228 implmented workaround sugested by AB - needs to be tested against a trunk build
------------------------------------------------------------------------
dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn merge -c39753 https://source.sakaiproject.org/svn/polls/trunk polls/
U    polls/.classpath
A    polls/tool/src/java/org/sakaiproject/poll/tool/evolvers
A    polls/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java
C    polls/tool/src/webapp/WEB-INF/requestContext.xml
U    polls/tool/pom.xml

dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn resolved polls/tool/src/webapp/WEB-INF/requestContext.xml
Resolved conflicted state of 'polls/tool/src/webapp/WEB-INF/requestContext.xml


----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From david.horwitz@uct.ac.za Fri Jan  4 06:08:27 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.98])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 06:08:27 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 06:08:27 -0500
Received: from firestarter.mr.itd.umich.edu (firestarter.mr.itd.umich.edu [141.211.14.83])
	by casino.mail.umich.edu () with ESMTP id m04B8Qw9001368;
	Fri, 4 Jan 2008 06:08:26 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY firestarter.mr.itd.umich.edu ID 477E13A5.30FC0.24054 ; 
	 4 Jan 2008 06:08:23 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 784A476D7B;
	Fri,  4 Jan 2008 11:08:12 +0000 (GMT)
Message-ID: <200801041106.m04B6lK3006677@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 585
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 11:07:56 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 1CACC42D0C
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 11:07:58 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04B6lWM006679
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 06:06:47 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04B6lK3006677
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 06:06:47 -0500
Date: Fri, 4 Jan 2008 06:06:47 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f
To: source@collab.sakaiproject.org
From: david.horwitz@uct.ac.za
Subject: [sakai] svn commit: r39753 - in polls/trunk: . tool tool/src/java/org/sakaiproject/poll/tool tool/src/java/org/sakaiproject/poll/tool/evolvers tool/src/webapp/WEB-INF
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 06:08:27 2008
X-DSPAM-Confidence: 0.6948
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39753

Author: david.horwitz@uct.ac.za
Date: 2008-01-04 06:05:51 -0500 (Fri, 04 Jan 2008)
New Revision: 39753

Added:
polls/trunk/tool/src/java/org/sakaiproject/poll/tool/evolvers/
polls/trunk/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java
Modified:
polls/trunk/.classpath
polls/trunk/tool/pom.xml
polls/trunk/tool/src/webapp/WEB-INF/requestContext.xml
Log:
SAK-12228 implmented workaround sugested by AB - needs to be tested against a trunk build

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From david.horwitz@uct.ac.za Fri Jan  4 04:49:08 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.92])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 04:49:08 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 04:49:08 -0500
Received: from galaxyquest.mr.itd.umich.edu (galaxyquest.mr.itd.umich.edu [141.211.93.145])
	by score.mail.umich.edu () with ESMTP id m049n60G017588;
	Fri, 4 Jan 2008 04:49:06 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY galaxyquest.mr.itd.umich.edu ID 477E010C.48C2.10259 ; 
	 4 Jan 2008 04:49:03 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 254CC8CDEE;
	Fri,  4 Jan 2008 09:48:55 +0000 (GMT)
Message-ID: <200801040947.m049lUxo006517@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 246
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 09:48:36 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 8C13342C92
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 09:48:40 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m049lU3P006519
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 04:47:30 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m049lUxo006517
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 04:47:30 -0500
Date: Fri, 4 Jan 2008 04:47:30 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f
To: source@collab.sakaiproject.org
From: david.horwitz@uct.ac.za
Subject: [sakai] svn commit: r39752 - in podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp: css podcasts
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 04:49:08 2008
X-DSPAM-Confidence: 0.6528
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39752

Author: david.horwitz@uct.ac.za
Date: 2008-01-04 04:47:16 -0500 (Fri, 04 Jan 2008)
New Revision: 39752

Modified:
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/css/podcaster.css
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podMain.jsp
Log:
svn log -r39641 https://source.sakaiproject.org/svn/podcasts/trunk
------------------------------------------------------------------------
r39641 | josrodri@iupui.edu | 2007-12-28 23:44:24 +0200 (Fri, 28 Dec 2007) | 1 line

SAK-9882: refactored podMain.jsp the right way (at least much closer to)
------------------------------------------------------------------------

dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn merge  -c39641 https://source.sakaiproject.org/svn/podcasts/trunk podcasts/
C    podcasts/podcasts-app/src/webapp/podcasts/podMain.jsp
U    podcasts/podcasts-app/src/webapp/css/podcaster.css

conflict merged manualy



----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From david.horwitz@uct.ac.za Fri Jan  4 04:33:44 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.46])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 04:33:44 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 04:33:44 -0500
Received: from workinggirl.mr.itd.umich.edu (workinggirl.mr.itd.umich.edu [141.211.93.143])
	by fan.mail.umich.edu () with ESMTP id m049Xge3031803;
	Fri, 4 Jan 2008 04:33:42 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY workinggirl.mr.itd.umich.edu ID 477DFD6C.75DBE.26054 ; 
	 4 Jan 2008 04:33:35 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 6C929BA656;
	Fri,  4 Jan 2008 09:33:27 +0000 (GMT)
Message-ID: <200801040932.m049W2i5006493@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 153
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 09:33:10 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 6C69423767
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 09:33:13 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m049W3fl006495
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 04:32:03 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m049W2i5006493
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 04:32:02 -0500
Date: Fri, 4 Jan 2008 04:32:02 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f
To: source@collab.sakaiproject.org
From: david.horwitz@uct.ac.za
Subject: [sakai] svn commit: r39751 - in podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp: css images podcasts
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 04:33:44 2008
X-DSPAM-Confidence: 0.7002
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39751

Author: david.horwitz@uct.ac.za
Date: 2008-01-04 04:31:35 -0500 (Fri, 04 Jan 2008)
New Revision: 39751

Removed:
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/images/rss-feed-icon.png
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podPermissions.jsp
Modified:
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/css/podcaster.css
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podDelete.jsp
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podMain.jsp
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podNoResource.jsp
podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podOptions.jsp
Log:
svn log -r39146 https://source.sakaiproject.org/svn/podcasts/trunk
------------------------------------------------------------------------
r39146 | josrodri@iupui.edu | 2007-12-12 21:40:33 +0200 (Wed, 12 Dec 2007) | 1 line

SAK-9882: refactored the other pages as well to take advantage of proper jsp components as well as validation cleanup.
------------------------------------------------------------------------
dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn merge -c39146 https://source.sakaiproject.org/svn/podcasts/trunk podcasts/
D    podcasts/podcasts-app/src/webapp/podcasts/podPermissions.jsp
U    podcasts/podcasts-app/src/webapp/podcasts/podDelete.jsp
U    podcasts/podcasts-app/src/webapp/podcasts/podMain.jsp
U    podcasts/podcasts-app/src/webapp/podcasts/podNoResource.jsp
U    podcasts/podcasts-app/src/webapp/podcasts/podOptions.jsp
D    podcasts/podcasts-app/src/webapp/images/rss-feed-icon.png
U    podcasts/podcasts-app/src/webapp/css/podcaster.css



----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From stephen.marquard@uct.ac.za Fri Jan  4 04:07:34 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.25])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Fri, 04 Jan 2008 04:07:34 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Fri, 04 Jan 2008 04:07:34 -0500
Received: from salemslot.mr.itd.umich.edu (salemslot.mr.itd.umich.edu [141.211.14.58])
	by panther.mail.umich.edu () with ESMTP id m0497WAN027902;
	Fri, 4 Jan 2008 04:07:32 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY salemslot.mr.itd.umich.edu ID 477DF74E.49493.30415 ; 
	 4 Jan 2008 04:07:29 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 88598BA5B6;
	Fri,  4 Jan 2008 09:07:19 +0000 (GMT)
Message-ID: <200801040905.m0495rWB006420@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 385
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 09:07:04 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 90636418A8
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 09:07:04 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m0495sZs006422
	for <source@collab.sakaiproject.org>; Fri, 4 Jan 2008 04:05:54 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m0495rWB006420
	for source@collab.sakaiproject.org; Fri, 4 Jan 2008 04:05:53 -0500
Date: Fri, 4 Jan 2008 04:05:53 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to stephen.marquard@uct.ac.za using -f
To: source@collab.sakaiproject.org
From: stephen.marquard@uct.ac.za
Subject: [sakai] svn commit: r39750 - event/branches/SAK-6216/event-util/util/src/java/org/sakaiproject/util
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Fri Jan  4 04:07:34 2008
X-DSPAM-Confidence: 0.7554
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39750

Author: stephen.marquard@uct.ac.za
Date: 2008-01-04 04:05:43 -0500 (Fri, 04 Jan 2008)
New Revision: 39750

Modified:
event/branches/SAK-6216/event-util/util/src/java/org/sakaiproject/util/EmailNotification.java
Log:
SAK-6216 merge event change from SAK-11169 (r39033) to synchronize branch with 2-5-x (for convenience for UCT local build)

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From louis@media.berkeley.edu Thu Jan  3 19:51:21 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.91])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Thu, 03 Jan 2008 19:51:21 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Thu, 03 Jan 2008 19:51:21 -0500
Received: from eyewitness.mr.itd.umich.edu (eyewitness.mr.itd.umich.edu [141.211.93.142])
	by jacknife.mail.umich.edu () with ESMTP id m040pJHB027171;
	Thu, 3 Jan 2008 19:51:19 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY eyewitness.mr.itd.umich.edu ID 477D8300.AC098.32562 ; 
	 3 Jan 2008 19:51:15 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id E6CC4B9F8A;
	Fri,  4 Jan 2008 00:36:06 +0000 (GMT)
Message-ID: <200801040023.m040NpCc005473@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 754
          for <source@collab.sakaiproject.org>;
          Fri, 4 Jan 2008 00:35:43 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 8889842C49
	for <source@collab.sakaiproject.org>; Fri,  4 Jan 2008 00:25:00 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m040NpgM005475
	for <source@collab.sakaiproject.org>; Thu, 3 Jan 2008 19:23:51 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m040NpCc005473
	for source@collab.sakaiproject.org; Thu, 3 Jan 2008 19:23:51 -0500
Date: Thu, 3 Jan 2008 19:23:51 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to louis@media.berkeley.edu using -f
To: source@collab.sakaiproject.org
From: louis@media.berkeley.edu
Subject: [sakai] svn commit: r39749 - in bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src: bundle webapp/vm/sitesetup
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Thu Jan  3 19:51:20 2008
X-DSPAM-Confidence: 0.6956
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39749

Author: louis@media.berkeley.edu
Date: 2008-01-03 19:23:46 -0500 (Thu, 03 Jan 2008)
New Revision: 39749

Modified:
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/bundle/sitesetupgeneric.properties
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-importSites.vm
Log:
BSP-1420 Update text to clarify "Re-Use Materials..." option in WS Setup

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From louis@media.berkeley.edu Thu Jan  3 17:18:23 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.91])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Thu, 03 Jan 2008 17:18:23 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Thu, 03 Jan 2008 17:18:23 -0500
Received: from salemslot.mr.itd.umich.edu (salemslot.mr.itd.umich.edu [141.211.14.58])
	by jacknife.mail.umich.edu () with ESMTP id m03MIMXY027729;
	Thu, 3 Jan 2008 17:18:22 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY salemslot.mr.itd.umich.edu ID 477D5F23.797F6.16348 ; 
	 3 Jan 2008 17:18:14 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id EF439B98CE;
	Thu,  3 Jan 2008 22:18:19 +0000 (GMT)
Message-ID: <200801032216.m03MGhDa005292@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 236
          for <source@collab.sakaiproject.org>;
          Thu, 3 Jan 2008 22:18:04 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 905D53C2FD
	for <source@collab.sakaiproject.org>; Thu,  3 Jan 2008 22:17:52 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03MGhrs005294
	for <source@collab.sakaiproject.org>; Thu, 3 Jan 2008 17:16:43 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03MGhDa005292
	for source@collab.sakaiproject.org; Thu, 3 Jan 2008 17:16:43 -0500
Date: Thu, 3 Jan 2008 17:16:43 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to louis@media.berkeley.edu using -f
To: source@collab.sakaiproject.org
From: louis@media.berkeley.edu
Subject: [sakai] svn commit: r39746 - in bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src: bundle webapp/vm/sitesetup
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Thu Jan  3 17:18:23 2008
X-DSPAM-Confidence: 0.6959
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39746

Author: louis@media.berkeley.edu
Date: 2008-01-03 17:16:39 -0500 (Thu, 03 Jan 2008)
New Revision: 39746

Modified:
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/bundle/sitesetupgeneric.properties
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-siteInfo-duplicate.vm
Log:
BSP-1421 Add text to clarify "Duplicate Site" option in Site Info

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From ray@media.berkeley.edu Thu Jan  3 17:07:00 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.39])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Thu, 03 Jan 2008 17:07:00 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Thu, 03 Jan 2008 17:07:00 -0500
Received: from anniehall.mr.itd.umich.edu (anniehall.mr.itd.umich.edu [141.211.93.141])
	by faithful.mail.umich.edu () with ESMTP id m03M6xaq014868;
	Thu, 3 Jan 2008 17:06:59 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY anniehall.mr.itd.umich.edu ID 477D5C7A.4FE1F.22211 ; 
	 3 Jan 2008 17:06:53 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 0BC8D7225E;
	Thu,  3 Jan 2008 22:06:57 +0000 (GMT)
Message-ID: <200801032205.m03M5Ea7005273@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 554
          for <source@collab.sakaiproject.org>;
          Thu, 3 Jan 2008 22:06:34 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 2AB513C2FD
	for <source@collab.sakaiproject.org>; Thu,  3 Jan 2008 22:06:23 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03M5EQa005275
	for <source@collab.sakaiproject.org>; Thu, 3 Jan 2008 17:05:14 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03M5Ea7005273
	for source@collab.sakaiproject.org; Thu, 3 Jan 2008 17:05:14 -0500
Date: Thu, 3 Jan 2008 17:05:14 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to ray@media.berkeley.edu using -f
To: source@collab.sakaiproject.org
From: ray@media.berkeley.edu
Subject: [sakai] svn commit: r39745 - providers/trunk/cm/cm-authz-provider/src/java/org/sakaiproject/coursemanagement/impl/provider
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Thu Jan  3 17:07:00 2008
X-DSPAM-Confidence: 0.7556
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39745

Author: ray@media.berkeley.edu
Date: 2008-01-03 17:05:11 -0500 (Thu, 03 Jan 2008)
New Revision: 39745

Modified:
providers/trunk/cm/cm-authz-provider/src/java/org/sakaiproject/coursemanagement/impl/provider/CourseManagementGroupProvider.java
Log:
SAK-12602 Fix logic when a user has multiple roles in a section

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From cwen@iupui.edu Thu Jan  3 16:34:40 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.34])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Thu, 03 Jan 2008 16:34:40 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Thu, 03 Jan 2008 16:34:40 -0500
Received: from icestorm.mr.itd.umich.edu (icestorm.mr.itd.umich.edu [141.211.93.149])
	by chaos.mail.umich.edu () with ESMTP id m03LYdY1029538;
	Thu, 3 Jan 2008 16:34:39 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY icestorm.mr.itd.umich.edu ID 477D54EA.13F34.26602 ; 
	 3 Jan 2008 16:34:36 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id CC710ADC79;
	Thu,  3 Jan 2008 21:34:29 +0000 (GMT)
Message-ID: <200801032133.m03LX3gG005191@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 611
          for <source@collab.sakaiproject.org>;
          Thu, 3 Jan 2008 21:34:08 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 43C4242B55
	for <source@collab.sakaiproject.org>; Thu,  3 Jan 2008 21:34:12 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03LX3Vb005193
	for <source@collab.sakaiproject.org>; Thu, 3 Jan 2008 16:33:03 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03LX3gG005191
	for source@collab.sakaiproject.org; Thu, 3 Jan 2008 16:33:03 -0500
Date: Thu, 3 Jan 2008 16:33:03 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f
To: source@collab.sakaiproject.org
From: cwen@iupui.edu
Subject: [sakai] svn commit: r39744 - oncourse/branches/oncourse_OPC_122007
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Thu Jan  3 16:34:40 2008
X-DSPAM-Confidence: 0.9846
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39744

Author: cwen@iupui.edu
Date: 2008-01-03 16:33:02 -0500 (Thu, 03 Jan 2008)
New Revision: 39744

Modified:
oncourse/branches/oncourse_OPC_122007/
oncourse/branches/oncourse_OPC_122007/.externals
Log:
update external for GB.

----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From cwen@iupui.edu Thu Jan  3 16:29:07 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.46])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Thu, 03 Jan 2008 16:29:07 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Thu, 03 Jan 2008 16:29:07 -0500
Received: from galaxyquest.mr.itd.umich.edu (galaxyquest.mr.itd.umich.edu [141.211.93.145])
	by fan.mail.umich.edu () with ESMTP id m03LT6uw027749;
	Thu, 3 Jan 2008 16:29:06 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY galaxyquest.mr.itd.umich.edu ID 477D5397.E161D.20326 ; 
	 3 Jan 2008 16:28:58 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id DEC65ADC79;
	Thu,  3 Jan 2008 21:28:52 +0000 (GMT)
Message-ID: <200801032127.m03LRUqH005177@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 917
          for <source@collab.sakaiproject.org>;
          Thu, 3 Jan 2008 21:28:39 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 1FBB042B30
	for <source@collab.sakaiproject.org>; Thu,  3 Jan 2008 21:28:38 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03LRUk4005179
	for <source@collab.sakaiproject.org>; Thu, 3 Jan 2008 16:27:30 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03LRUqH005177
	for source@collab.sakaiproject.org; Thu, 3 Jan 2008 16:27:30 -0500
Date: Thu, 3 Jan 2008 16:27:30 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f
To: source@collab.sakaiproject.org
From: cwen@iupui.edu
Subject: [sakai] svn commit: r39743 - gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Thu Jan  3 16:29:07 2008
X-DSPAM-Confidence: 0.8509
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39743

Author: cwen@iupui.edu
Date: 2008-01-03 16:27:29 -0500 (Thu, 03 Jan 2008)
New Revision: 39743

Modified:
gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java
Log:
svn merge -c 39403 https://source.sakaiproject.org/svn/gradebook/trunk
U    app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java

svn log -r 39403 https://source.sakaiproject.org/svn/gradebook/trunk
------------------------------------------------------------------------
r39403 | wagnermr@iupui.edu | 2007-12-17 17:11:08 -0500 (Mon, 17 Dec 2007) | 3 lines

SAK-12504
http://jira.sakaiproject.org/jira/browse/SAK-12504
Viewing "All Grades" page as a TA with grader permissions causes stack trace
------------------------------------------------------------------------


----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From cwen@iupui.edu Thu Jan  3 16:23:48 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.91])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Thu, 03 Jan 2008 16:23:48 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Thu, 03 Jan 2008 16:23:48 -0500
Received: from salemslot.mr.itd.umich.edu (salemslot.mr.itd.umich.edu [141.211.14.58])
	by jacknife.mail.umich.edu () with ESMTP id m03LNlf0002115;
	Thu, 3 Jan 2008 16:23:47 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY salemslot.mr.itd.umich.edu ID 477D525E.1448.30389 ; 
	 3 Jan 2008 16:23:44 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id 9D005B9D06;
	Thu,  3 Jan 2008 21:23:38 +0000 (GMT)
Message-ID: <200801032122.m03LMFo4005148@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 6
          for <source@collab.sakaiproject.org>;
          Thu, 3 Jan 2008 21:23:24 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 3535542B69
	for <source@collab.sakaiproject.org>; Thu,  3 Jan 2008 21:23:24 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03LMFtT005150
	for <source@collab.sakaiproject.org>; Thu, 3 Jan 2008 16:22:15 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03LMFo4005148
	for source@collab.sakaiproject.org; Thu, 3 Jan 2008 16:22:15 -0500
Date: Thu, 3 Jan 2008 16:22:15 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f
To: source@collab.sakaiproject.org
From: cwen@iupui.edu
Subject: [sakai] svn commit: r39742 - gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Thu Jan  3 16:23:48 2008
X-DSPAM-Confidence: 0.9907
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39742

Author: cwen@iupui.edu
Date: 2008-01-03 16:22:14 -0500 (Thu, 03 Jan 2008)
New Revision: 39742

Modified:
gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java
Log:
svn merge -c 35014 https://source.sakaiproject.org/svn/gradebook/trunk
U    app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java

svn log -r 35014 https://source.sakaiproject.org/svn/gradebook/trunk
------------------------------------------------------------------------
r35014 | wagnermr@iupui.edu | 2007-09-12 16:17:59 -0400 (Wed, 12 Sep 2007) | 3 lines

SAK-11458
http://bugs.sakaiproject.org/jira/browse/SAK-11458
Course grade does not appear on "All Grades" page if no categories in gb
------------------------------------------------------------------------


----------------------
This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site.
You can modify how you receive notifications at My Workspace > Preferences.



From ray@media.berkeley.edu Thu Jan  3 15:56:00 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.93])
	 by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
	 Thu, 03 Jan 2008 15:56:00 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
	 by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
	 Thu, 03 Jan 2008 15:56:00 -0500
Received: from creepshow.mr.itd.umich.edu (creepshow.mr.itd.umich.edu [141.211.14.84])
	by mission.mail.umich.edu () with ESMTP id m03Ktxn6011763;
	Thu, 3 Jan 2008 15:55:59 -0500
Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184])
	BY creepshow.mr.itd.umich.edu ID 477D4BD5.49C7D.29291 ; 
	 3 Jan 2008 15:55:52 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
	by paploo.uhi.ac.uk (Postfix) with ESMTP id C1DD26DA3E;
	Thu,  3 Jan 2008 20:55:46 +0000 (GMT)
Message-ID: <200801032054.m03KsIIF005054@nakamura.uits.iupui.edu>
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from prod.collab.uhi.ac.uk ([194.35.219.182])
          by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 0
          for <source@collab.sakaiproject.org>;
          Thu, 3 Jan 2008 20:55:25 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122])
	by shmi.uhi.ac.uk (Postfix) with ESMTP id 3721142B2D
	for <source@collab.sakaiproject.org>; Thu,  3 Jan 2008 20:55:27 +0000 (GMT)
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03KsI2x005057
	for <source@collab.sakaiproject.org>; Thu, 3 Jan 2008 15:54:18 -0500
Received: (from apache@localhost)
	by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03KsIIF005054
	for source@collab.sakaiproject.org; Thu, 3 Jan 2008 15:54:18 -0500
Date: Thu, 3 Jan 2008 15:54:18 -0500
X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to ray@media.berkeley.edu using -f
To: source@collab.sakaiproject.org
From: ray@media.berkeley.edu
Subject: [sakai] svn commit: r39741 - in component/trunk: . component-api component-api/component component-api/component/src/config/org/sakaiproject/config component-api/component/src/java/org component-api/component/src/java/org/sakaiproject/component/api component-api/component/src/java/org/sakaiproject/component/cover component-api/component/src/java/org/sakaiproject/component/impl component-api/component/src/java/org/sakaiproject/util component-impl component-impl/impl component-impl/impl/src/java/org/sakaiproject/component/impl component-impl/integration-test component-impl/integration-test/src component-impl/integration-test/src/java component-impl/integration-test/src/java/org component-impl/integration-test/src/java/org/sakaiproject component-impl/integration-test/src/java/org/sakaiproject/component component-impl/integration-test/src/java/org/sakaiproject/component/test component-impl/integration-test/src/java/org/sakaiproject/component/test/dynamic component-impl/!
 integration-test/src/test component-impl/integration-test/src/test/java component-impl/integration-test/src/test/java/org component-impl/integration-test/src/test/java/org/sakaiproject component-impl/integration-test/src/test/java/org/sakaiproject/component component-impl/integration-test/src/test/resources component-impl/integration-test/src/test/resources/dynamic component-impl/integration-test/src/test/resources/filesystem component-impl/integration-test/src/webapp component-impl/integration-test/src/webapp/WEB-INF component-impl/integration-test/xdocs component-impl/pack/src/webapp/WEB-INF
X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
X-Content-Type-Message-Body: text/plain; charset=UTF-8
Content-Type: text/plain; charset=UTF-8
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Thu Jan  3 15:56:00 2008
X-DSPAM-Confidence: 0.7003
X-DSPAM-Probability: 0.0000

Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39741

Author: ray@media.berkeley.edu
Date: 2008-01-03 15:53:29 -0500 (Thu, 03 Jan 2008)
New Revision: 39741

Added:
component/trunk/component-api/component/src/config/org/sakaiproject/config/sakai-configuration.xml
component/trunk/component-api/component/src/java/org/sakaiproject/component/impl/DynamicDefaultSakaiProperties.java
component/trunk/component-api/component/src/java/org/sakaiproject/util/BeanFactoryPostProcessorCreator.java
component/trunk/component-api/component/src/java/org/sakaiproject/util/ReversiblePropertyOverrideConfigurer.java
component/trunk/component-api/component/src/java/org/sakaiproject/util/SakaiApplicationContext.java
component/trunk/component-api/component/src/java/org/sakaiproject/util/SakaiProperties.java
component/trunk/component-api/component/src/java/org/sakaiproject/util/SakaiPropertyPromoter.java
component/trunk/component-impl/integration-test/
component/trunk/component-impl/integration-test/pom.xml
component/trunk/component-impl/integration-test/src/
component/trunk/component-impl/integration-test/src/java/
component/trunk/component-impl/integration-test/src/java/org/
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/ITestComponent.java
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/ITestProvider.java
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/TestComponent.java
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/TestProvider1.java
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/TestProvider2.java
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/dynamic/
component/trunk/component-impl/integration-test/src/java/org/sakaiproject/component/test/dynamic/DbPropertiesDao.java
component/trunk/component-impl/integration-test/src/test/
component/trunk/component-impl/integration-test/src/test/java/
component/trunk/component-impl/integration-test/src/test/java/org/
component/trunk/component-im
Download .txt
gitextract_si9uiwy2/

├── Course-1/
│   ├── Assignemnts/
│   │   ├── Assignment_chapter2.py
│   │   ├── Assignment_chapter3.py
│   │   ├── Assignment_chapter4.py
│   │   ├── Assignment_chapter5.py
│   │   └── FirstAssignment.py
│   └── Quizzes/
│       ├── quiz_chapter2.md
│       ├── quiz_chapter3.md
│       ├── quiz_chapter4.md
│       └── quiz_chapter5.md
├── Course-2/
│   ├── Assignments/
│   │   ├── Assignment_chapter10.py
│   │   ├── Assignment_chapter6.py
│   │   ├── Assignment_chapter7.py
│   │   ├── Assignment_chapter8.py
│   │   └── Assignment_chapter9.py
│   └── Quizzes/
│       ├── quiz_chapter10.md
│       ├── quiz_chapter6.md
│       ├── quiz_chapter7.md
│       ├── quiz_chapter8.md
│       └── quiz_chapter9.md
├── Course-3/
│   ├── Assignments/
│   │   ├── Assignment_chapter11.py
│   │   ├── Assignment_chapter12.py
│   │   ├── Assignment_chapter13-1.py
│   │   ├── Assignment_chapter13-2.py
│   │   ├── Assignment_chapter14.py
│   │   ├── Assignment_chapter15-1.py
│   │   ├── Assignment_chapter15-2.py
│   │   └── regex_sum_135850.txt
│   └── Quizzes/
│       ├── quiz_chapter11.md
│       ├── quiz_chapter12.md
│       ├── quiz_chapter13.md
│       ├── quiz_chapter14.md
│       └── quiz_chapter15.md
├── Course-4/
│   ├── Week-2/
│   │   ├── Quizzes/
│   │   │   ├── quiz_chapter16.md
│   │   │   ├── week1- quizz1.md
│   │   │   └── week2- quizz1.md
│   │   └── assignments/
│   │       ├── assignment.py
│   │       └── mbox.txt
│   ├── Week-3/
│   │   ├── Assignment/
│   │   │   └── tracks/
│   │   │       ├── Library.xml
│   │   │       ├── README.txt
│   │   │       └── tracks.py
│   │   └── Quizzes/
│   │       └── Week-3.md
│   ├── Week-4/
│   │   ├── Assignment/
│   │   │   ├── roster.py
│   │   │   └── roster_data.json
│   │   └── Quzzes/
│   │       └── Week-4.md
│   └── Week-5/
│       └── geodata/
│           ├── README.txt
│           ├── geodump.py
│           ├── geoload.py
│           ├── where.data
│           ├── where.html
│           └── where.js
└── Readme.md
Download .txt
SYMBOL INDEX (2 symbols across 2 files)

FILE: Course-1/Assignemnts/Assignment_chapter4.py
  function computepay (line 13) | def computepay(h,r):

FILE: Course-4/Week-3/Assignment/tracks/tracks.py
  function lookup (line 47) | def lookup(d, key):
Condensed preview — 51 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,736K chars).
[
  {
    "path": "Course-1/Assignemnts/Assignment_chapter2.py",
    "chars": 809,
    "preview": "'''\r\n2.2 Write a program that uses input to prompt a user for their name and then\r\nwelcomes them. Note that input will p"
  },
  {
    "path": "Course-1/Assignemnts/Assignment_chapter3.py",
    "chars": 1417,
    "preview": "'''\r\n3.1 Write a program to prompt the user for hours and rate per hour using input\r\nto compute gross pay. Pay the hourl"
  },
  {
    "path": "Course-1/Assignemnts/Assignment_chapter4.py",
    "chars": 1020,
    "preview": "'''\r\n4.6 Write a program to prompt the user for hours and rate per hour using input\r\nto compute gross pay. Pay should be"
  },
  {
    "path": "Course-1/Assignemnts/Assignment_chapter5.py",
    "chars": 898,
    "preview": "'''\r\n5.2 Write a program that repeatedly prompts a user for integer numbers until\r\nthe user enters 'done'. Once 'done' i"
  },
  {
    "path": "Course-1/Assignemnts/FirstAssignment.py",
    "chars": 32,
    "preview": "print ('I\\'m a happy learner')\r\n"
  },
  {
    "path": "Course-1/Quizzes/quiz_chapter2.md",
    "chars": 2371,
    "preview": "** 1- In the following code, **\r\n```Python\r\n print (98.6)\r\n```\r\n** What is \"98.6\"? **\r\n\r\n    1) A conditional statement\r"
  },
  {
    "path": "Course-1/Quizzes/quiz_chapter3.md",
    "chars": 4308,
    "preview": "** 1- What do we do to a Python statement that is immediately after an if\r\nstatement to indicate that the statement is t"
  },
  {
    "path": "Course-1/Quizzes/quiz_chapter4.md",
    "chars": 3287,
    "preview": "** 1- Which Python keyword indicates the start of a function definition?**\r\n\r\n     1) return\r\n     2) continue\r\n     3) "
  },
  {
    "path": "Course-1/Quizzes/quiz_chapter5.md",
    "chars": 3129,
    "preview": "** 1- What is wrong with this Python loop:**\r\n```Python\r\nn = 5\r\nwhile n > 0 :\r\n    print(n)\r\nprint('All done')\r\n```\r\n   "
  },
  {
    "path": "Course-2/Assignments/Assignment_chapter10.py",
    "chars": 885,
    "preview": "'''\r\n10.2 Write a program to read through the mbox-short.txt and figure out the\r\ndistribution by hour of the day for eac"
  },
  {
    "path": "Course-2/Assignments/Assignment_chapter6.py",
    "chars": 332,
    "preview": "'''\r\n6.5 Write code using find() and string slicing (see section 6.10) to extract the\r\nnumber at the end of the line bel"
  },
  {
    "path": "Course-2/Assignments/Assignment_chapter7.py",
    "chars": 1268,
    "preview": "'''\r\n7.1 Write a program that prompts for a file name, then opens that file and\r\nreads through the file, and print the c"
  },
  {
    "path": "Course-2/Assignments/Assignment_chapter8.py",
    "chars": 1567,
    "preview": "'''\r\n8.4 Open the file romeo.txt and read it line by line. For each line, split the\r\nline into a list of words using the"
  },
  {
    "path": "Course-2/Assignments/Assignment_chapter9.py",
    "chars": 1058,
    "preview": "'''\r\n9.4 Write a program to read through the mbox-short.txt and figure out who has\r\nthe sent the greatest number of mail"
  },
  {
    "path": "Course-2/Quizzes/quiz_chapter10.md",
    "chars": 3546,
    "preview": "** 1- What is the difference between a Python tuple and Python list?**\r\n\r\n    1) Lists maintain the order of the items a"
  },
  {
    "path": "Course-2/Quizzes/quiz_chapter6.md",
    "chars": 2483,
    "preview": "** 1- What does the following Python Program print out?**\r\n```Python\r\nstr1 = \"Hello\"\r\nstr2 = 'there'\r\nbob = str1 + str2\r"
  },
  {
    "path": "Course-2/Quizzes/quiz_chapter7.md",
    "chars": 3849,
    "preview": "** 1- Given the architecture and terminology we introduced in Chapter 1,\r\nwhere are files stored?**\r\n\r\n    1) Motherboar"
  },
  {
    "path": "Course-2/Quizzes/quiz_chapter8.md",
    "chars": 2743,
    "preview": "** 1- How are \"collection\" variables different from normal variables?**\r\n\r\n    1) Collection variables can only store a "
  },
  {
    "path": "Course-2/Quizzes/quiz_chapter9.md",
    "chars": 3275,
    "preview": "** 1- How are Python dictionaries different from Python lists?**\r\n\r\n    1) Python lists maintain order and dictionaries "
  },
  {
    "path": "Course-3/Assignments/Assignment_chapter11.py",
    "chars": 253,
    "preview": "import csv\r\nimport re\r\n\r\nfilename = r'C:\\Users\\Omar\\Desktop\\py4e\\Course-3\\Assignments\\regex_sum_135850.txt'\r\nf = open(fi"
  },
  {
    "path": "Course-3/Assignments/Assignment_chapter12.py",
    "chars": 343,
    "preview": "import socket\r\n\r\nmysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\r\nmysock.connect(('data.pr4e.org', 80))\r\ncmd "
  },
  {
    "path": "Course-3/Assignments/Assignment_chapter13-1.py",
    "chars": 521,
    "preview": "from urllib.request import urlopen\r\nfrom bs4 import BeautifulSoup\r\nimport ssl\r\n\r\n# Ignore SSL certificate errors\r\nctx = "
  },
  {
    "path": "Course-3/Assignments/Assignment_chapter13-2.py",
    "chars": 684,
    "preview": "from urllib.request import urlopen\r\nfrom bs4 import BeautifulSoup\r\nimport ssl\r\n\r\nctx = ssl.create_default_context()\r\nctx"
  },
  {
    "path": "Course-3/Assignments/Assignment_chapter14.py",
    "chars": 556,
    "preview": "import urllib.request, urllib.parse, urllib.error\r\nimport xml.etree.ElementTree as ET\r\n\r\nserviceurl = 'http://maps.googl"
  },
  {
    "path": "Course-3/Assignments/Assignment_chapter15-1.py",
    "chars": 490,
    "preview": "import json\r\nimport urllib.request, urllib.parse, urllib.error\r\nimport xml.etree.ElementTree as ET\r\n\r\nurl = input('Enter"
  },
  {
    "path": "Course-3/Assignments/Assignment_chapter15-2.py",
    "chars": 608,
    "preview": "import json\r\nimport urllib.request, urllib.parse, urllib.error\r\nimport xml.etree.ElementTree as ET\r\n\r\nplace_name = input"
  },
  {
    "path": "Course-3/Assignments/regex_sum_135850.txt",
    "chars": 28492,
    "preview": "This file contains the actual data for your assignment - good luck!\n\n\nWhy should you learn to write programs?\n\nWriting 1"
  },
  {
    "path": "Course-3/Quizzes/quiz_chapter11.md",
    "chars": 3247,
    "preview": "** 1- Which of the following best describes \"Regular Expressions\"?**\r\n\r\n    1) A small programming language unto itself\r"
  },
  {
    "path": "Course-3/Quizzes/quiz_chapter12.md",
    "chars": 2621,
    "preview": "** 1. What do we call it when a browser uses the HTTP protocol to load a file or page from a server and display it in th"
  },
  {
    "path": "Course-3/Quizzes/quiz_chapter13.md",
    "chars": 4269,
    "preview": "** 1. Which of the following Python data structures is most similar to the value returned in this line of Python:**\r\n```"
  },
  {
    "path": "Course-3/Quizzes/quiz_chapter14.md",
    "chars": 2741,
    "preview": "** 1. What is the name of the Python 2.x library to parse XML data?**\r\n\r\n    1) xml2\r\n    2) xml.etree.ElementTree\r\n    "
  },
  {
    "path": "Course-3/Quizzes/quiz_chapter15.md",
    "chars": 2847,
    "preview": "** 1. Who is credited with getting the JSON movement started?**\r\n\r\n     1) Bjarne Stroustrup\r\n     2) Mitchell Baker\r\n  "
  },
  {
    "path": "Course-4/Week-2/Quizzes/quiz_chapter16.md",
    "chars": 1021,
    "preview": "** 1. What is the most common Unicode encoding when moving data between systems?**\r\n\r\n    1) UTF-8\r\n    2) UTF-32\r\n    3"
  },
  {
    "path": "Course-4/Week-2/Quizzes/week1- quizz1.md",
    "chars": 2993,
    "preview": "\r\n** 1. Which came first, the instance or the class?**\r\n\r\n     1) class\r\n     2) function\r\n     3) instance\r\n     4) met"
  },
  {
    "path": "Course-4/Week-2/Quizzes/week2- quizz1.md",
    "chars": 2679,
    "preview": "** 1. Structured Query Language (SQL) is used to (check all that apply)**\r\n\r\n     1) Insert data\r\n     2) Check Python c"
  },
  {
    "path": "Course-4/Week-2/assignments/assignment.py",
    "chars": 1002,
    "preview": "import sqlite3\n\nconn = sqlite3.connect('emaildb.sqlite')\ncur = conn.cursor()\n\ncur.execute('DROP TABLE IF EXISTS Counts')"
  },
  {
    "path": "Course-4/Week-2/assignments/mbox.txt",
    "chars": 6687002,
    "preview": "From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008\nReturn-Path: <postmaster@collab.sakaiproject.org>\nReceived: fro"
  },
  {
    "path": "Course-4/Week-3/Assignment/tracks/Library.xml",
    "chars": 652714,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
  },
  {
    "path": "Course-4/Week-3/Assignment/tracks/README.txt",
    "chars": 202,
    "preview": "To export your own Library.xml from iTunes \n\nFile -> Library -> Export Library\n\nMake sure it is in the correct folder.  "
  },
  {
    "path": "Course-4/Week-3/Assignment/tracks/tracks.py",
    "chars": 2691,
    "preview": "import xml.etree.ElementTree as ET\nimport sqlite3\n\nconn = sqlite3.connect('trackdb.sqlite')\ncur = conn.cursor()\n\n# Make "
  },
  {
    "path": "Course-4/Week-3/Quizzes/Week-3.md",
    "chars": 4046,
    "preview": "** 1. What is the primary added value of relational databases over flat files?**\n\n    1) Ability to quickly convert data"
  },
  {
    "path": "Course-4/Week-4/Assignment/roster.py",
    "chars": 1685,
    "preview": "import json\nimport sqlite3\n\nconn = sqlite3.connect('rosterdb.sqlite')\ncur = conn.cursor()\n\n# Do some setup\ncur.executesc"
  },
  {
    "path": "Course-4/Week-4/Assignment/roster_data.json",
    "chars": 14708,
    "preview": "[\n  [\n    \"Rhianne\",\n    \"si110\",\n    1\n  ],\n  [\n    \"Igor\",\n    \"si110\",\n    0\n  ],\n  [\n    \"Maeya\",\n    \"si110\",\n    0"
  },
  {
    "path": "Course-4/Week-4/Quzzes/Week-4.md",
    "chars": 3191,
    "preview": "** 1. How do we model a many-to-many relationship between two database tables?**\n\n    1) We use a BLOB column in both ta"
  },
  {
    "path": "Course-4/Week-5/geodata/README.txt",
    "chars": 5251,
    "preview": "Using the Google Places API with a Database and\nVisualizing Data on Google Map\n\nIn this project, we are using the Google"
  },
  {
    "path": "Course-4/Week-5/geodata/geodump.py",
    "chars": 1014,
    "preview": "import sqlite3\nimport json\nimport codecs\n\nconn = sqlite3.connect('geodata.sqlite')\ncur = conn.cursor()\n\ncur.execute('SEL"
  },
  {
    "path": "Course-4/Week-5/geodata/geoload.py",
    "chars": 2200,
    "preview": "import urllib.request, urllib.parse, urllib.error\nimport http\nimport sqlite3\nimport json\nimport time\nimport ssl\nimport s"
  },
  {
    "path": "Course-4/Week-5/geodata/where.data",
    "chars": 7899,
    "preview": "AGH University of Science and Technology\nAcademy of Fine Arts Warsaw Poland\nAmerican University in Cairo\nArizona State U"
  },
  {
    "path": "Course-4/Week-5/geodata/where.html",
    "chars": 1982,
    "preview": "<html>\n  <head>\n    <meta name=\"viewport\" content=\"initial-scale=1.0, user-scalable=no\">\n    <meta charset=\"utf-8\">\n    "
  },
  {
    "path": "Course-4/Week-5/geodata/where.js",
    "chars": 22693,
    "preview": "myData = [\n[50.06688579999999,19.9136192, 'aleja Adama Mickiewicza 30, 30-059 Kraków, Poland'],\n[52.2394019,21.0150792, "
  },
  {
    "path": "Readme.md",
    "chars": 1037,
    "preview": "## Python for Everybody Specialization\r\n### University of Michigan\r\n\r\nCoursera Specialization :\r\n[Python for Everybody S"
  }
]

About this extraction

This page contains the full source code of the AmaniAbbas/py4e GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 51 files (7.2 MB), approximately 1.9M tokens, and a symbol index with 2 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!